NoMethodError
DeprecationProxy
を継承したクラス DeprecatedConstantProxy
で warn
がエラーを起こす。
NoMethodError: private method `warn' called for nil:NilClass
原因
何れかの gem で Kernel.require
を public
としてオーバーライドしている。
対処法
Kernel.require
のオーバーライドを private
にする。
Kernel.define_singleton_method(:require) { ... } Kernel.send(:private, :require)
参考:
Use `Kernel.require` in `DeprecationProxy` by wagenet · Pull Request #32458 · rails/rails – GitHub
FrozenError
middlewares
に追加しようとして FrozenError
が発生する。
FrozenError: can't modify frozen Array
対応策
eager_load
を無効にする。
config.eager_load = false
参考:
halt_callback_chains_on_return_false
NoMethodError
が発生する。
NoMethodError: undefined method `halt_callback_chains_on_return_false=' for ActiveSupport:Module
原因:
Rails 4 との後方互換のために用意されていた設定項目 halt_callback_chains_on_return_false
のアクセッサーが廃止されたため。
対処法:
config/initializers/new_framework_defaults.rb
内で該当する行をコメントアウトする。
参考:
既存のアプリの Rails のバージョンをあげた際に rails s が立ち上がらない – Qiita
Rails 5 の新フレームワークデフォルト設定ファイルでアップグレード作業を軽減する | TechRacho
mysql2 のバージョン指定
Rails5 (<= 5.1.5) でバージョン 0.5.x
系の mysql2
が使用できない。Gem::LoadError
が発生する。
Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
原因:
ActiveRecord
で使用可能な mysql2
のバージョンが制限されていて、0.5.x
系の mysql2
を読み込まない。
対処法:
ActiveRecord
で使用可能な mysql2
のバージョンを Gemfile
で指定する。使用可能な 0.4.x
系の mysql2
は 0.4.4
以降。
gem "mysql2", "~> 0.4.4"
もしくは、0.4.x
系の最新バージョンを指定して、
gem "mysql2", "~> 0.4.10"
あるいは、Rails 5.1.6 で修正済みなので、Rails 5.1.6 以降を使う。
gem "rails", ">= 5.1.6", "< 6" gem "mysql2", ">= 0.5.0", "< 0.6
もしくは、
gem "rails", "~> 5.2" gem "mysql2", "~> 0.5.2"
参考:
mysql2 と Rails の組み合わせでエラーが発生する | 人と情報
Rail5 でアップデートしたら mysql2 でエラーになった場合の対処方法 | ゼロイチ
Rails4 で mysql2 gem を指定してるのに「Gem::LoadError Specified ‘mysql2’」とでたら gem バージョンを下げると直るかも – Qiita
Rails で MySQL 動かないときの対処法 | 動かざることバグの如し
Support mysql2 0.4.x and 0.5.x by sodabrew · Pull Request #32310 · rails/rails – GitHub
9f5477a – Support mysql2 0.4.x and 0.5.x by sodabrew · Pull Request #32310 · rails/rails – GitHub
Gem::LoadError – rails/connection_specification.rb at v5.1.5 · rails/rails – GitHub
mysql2 – rails/mysql2_adapter.rb at v5.1.5 · rails/rails – GitHub
mysql2 – rails/mysql2_adapter.rb at v5.1.6 · rails/rails – GitHub
Gem::LoadError for mysql2 gem, but it’s already in Gemfile – Stack Overflow
Gem::LoadError: Specified ‘mysql2’ for database adapter, but the gem is not loaded – Stack Overflow