Tag: Rails/アップグレード/5.1から5.2
関連ページ†
参考情報†
- GemfileのRailsのバージョンを5.2系の最新場合に書き換える。他Rails 5.2でデモアプリを作成しGemfileを比較してアップデートしたほうがよさそうなのを更新。
gem 'rails', '5.2.3'
#gem 'mysql2', '~> 0.3.18'
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
# Use Puma as the app server
gem 'puma', '~> 3.11'
gem 'bootsnap', '>= 1.1.0', require: false
group :development do
gem 'web-console', '>= 3.3.0'
注意点†
undefined method `halt_callback_chains_on_return_false=' for ActiveSupport:Module†
couldn't find file 'ckeditor/init' with type 'application/javascript†
- ckeditor v5.0.0の問題?以下の指定でとりあえず。
gem 'ckeditor', '4.3.0'
本番環境でアセットファイルが表示されない†
モデルの依存関係でエラー†
- 実はRails 5からbelongs_toで指定した依存関係が必須扱いになっていた。
- これを元の挙動にもどすためのinitializerとしてnew_framework_defaults.rbというファイルが存在し、以下のようにして元の挙動にしていた。
Rails.application.config.active_record.belongs_to_required_by_default = false
- これがなぜかRails 5.2のタイミングで動かなくなっていた。rails consoleで確認できる。
bundle exec rails console
Rails.application.config.active_record.belongs_to_required_by_default #=> false
ActiveRecord::Base.belongs_to_required_by_default #=> true
- initializerが呼ばれる前にActiveRecord::Baseが初期化されているのが原因で、問題のプロジェクトはrails-settings-cachedが原因の模様。Settingsの継承元のクラスとしてActiveRecord::Baseが指定されており簡単に回避できそうもない。
- そこでapplication.rbに設定を追加することで安直に回避することに。
module Demo
class Application < Rails::Application
# rails-settings-cachedが存在すると効果がなくなるのでapplication.rbに定義する。
config.active_record.belongs_to_required_by_default = false
end
end