読者です 読者をやめる 読者になる 読者になる

Rails "warning: already initialized constant ActiveRecord::Base::OrmAdapter" エラーの対処

開発環境

OS X 10.9.5 
rails 4.1.6
ruby 2.1.0

問題

Railsのバージョンを4.2.0から4.1.6に切り替えたのちに、

$ bundle exec rails c

をしたところ、

"warning: already initialized constant ActiveRecord::Base::OrmAdapter" 
"warning: previous definition of OrmAdapter was here"

などのエラーが出た。

結論

$ bundle exec rake rails:update

で解決。

経緯

$ rails new をしたときは rails 4.2.0 だったが、その後Gemfileを

gem 'rails', '4.2.0'

↓

gem 'rails', '4.1.6'

と書き換えて bundle install。

この後、rails c をしたところエラーが発生した。

対処

参考サイト

Rails server not running due to ORM Adapter · Issue #36 · ianwhite/orm_adapter · GitHub

どうやら、Gemfileをいじって bundle install するだけではだめで、rakeのほうでも変更を反映させる必要があるらしい。

$ bundle exec rake rails:update

このコマンドを実行すると、以下の様なコンフリクトが発生する。

conflict  config/boot.rb

conflict  config/application.rb

conflict  config/secrets.yml

conflict  config/environments/development.rb

conflict  config/environments/production.rb

conflict  config/environments/test.rb

conflict  config/initializers/assets.rb

conflict  config/initializers/cookies_serializer.rb

conflict  config/initializers/session_store.rb

conflict  bin/rails

conflict  bin/rake

すべてyesでポチポチエンターを押していけば問題ない。 これで解決。