NoMethodError

DeprecationProxy を継承したクラス DeprecatedConstantProxywarn がエラーを起こす。

NoMethodError: private method `warn' called for nil:NilClass

原因

何れかの gem で Kernel.requirepublic としてオーバーライドしている。

対処法

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

参考

FrozenError: can’t modify frozen Array when adding devServer middleware · Issue #1700 · rails/webpacker – GitHub

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

“Specified ‘mysql2’ for database adapter, but the gem is not loaded” when upgrading to 0.5.0 · Issue #950 · brianmario/mysql2 – 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

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です