Rails 5.2.0 で問題の起きるgem(simple_form, annotate)

Rails 5.2.0が正式にリリースされましたね。めでたい。

いつものことですが、2018-04-11現在、Rails 5.2.0だと正常に動作しないgemがあります。とりあえず見つけたものをメモしておきます。

simple_form

Rails 5.2.0 upgrade causes “Undefined method wrapper for SimpleForm:Module” error Issue #1568 · plataformatec/simple_form

Gemfileでsimple_formのバージョンを指定していない場合、railsのバージョンを5.2.0に上げてbundle updateしたらsimple_formのバージョンが3.5.1から1.4.1まで下がるという現象が起きていました。上記はそのために引き起こされるエラーです。

単にgemspecの要求バージョンが厳しかったみたいで、このブログを書いている間に 4.0.0 がリリースされて解決しました。

https://github.com/plataformatec/simple_form/blob/master/CHANGELOG.md#400

3.5系でバージョンをロックしている人は4.0.0を試してみましょう。

# Gemfile

# gem "simple_form", "~> 3.5.1"
gem "simple_form", "~> 4.0.0"

annotate

Annotate no longer works with Rails 5.2 models Issue #538 · ctran/annotate_models

./bin/rails annotate_models または ./bin/rails db:migrate など、モデルのアノテーションを更新する際に下記のようなエラーが起きる場合があります。

Unable to annotate app/models/author.rb: can't modify frozen String
Unable to annotate app/models/author.rb: no implicit conversion of nil into Array

暫定的な措置として、設定でインデックスに関する情報の記入を無効化すればエラーを回避できます。

diff --git a/lib/tasks/auto_annotate_models.rake b/lib/tasks/auto_annotate_models.rake
index 9088128..9c2f5d5 100644
--- a/lib/tasks/auto_annotate_models.rake
+++ b/lib/tasks/auto_annotate_models.rake
@@ -16,7 +16,7 @@ if Rails.env.development?
       'position_in_serializer'    => 'before',
       'show_foreign_keys'         => 'true',
       'show_complete_foreign_keys' => 'false',
-      'show_indexes'              => 'true',
+      'show_indexes'              => 'false',
       'simple_indexes'            => 'false',
       'model_dir'                 => 'app/models',
       'root_dir'                  => '',

他にも何か見つけたら更新していきます。