ActiveRecord::ConnectionNotEstablishedのエラーについて
Rails3.1以降でActiveRecordを使用していないアプリを
herokuへディプロイした場合、発生するエラー
「ActiveRecord::ConnectionNotEstablished」の解決方法について、
ちょっとだけハマったので書いておきます。
ローカルの環境では問題が無く動いているので、原因が分からなかったのですが、
下記英語のサイトが助けてくれました。
http://www.benjaminoakes.com/2011/09/15/activerecordconnectionnotestablished-in-rails-3-1-on-heroku/
解決方法として複数上げてくれているのですが、個人的には
以下の流れで試してみました。
(1)spec/spec_helper.rbの修正
# If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, comment the following line or assign false # instead of true. config.use_transactional_fixtures = true
コメントには、ActiveRecordを使用していないのであれば、
この設定をコメントにするか、trueをfalseでセットしなさいとある。
で、コメントもfalseもどちらも試してみたのですが、
エラーは回避せず。。
そこで
(2)config/application.rbの修正
# Pick the frameworks you want: require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" require "active_resource/railtie" require "sprockets/railtie" # require "rails/test_unit/railtie"
「require "active_record/railtie"」を下記のようにコメント化。
# Pick the frameworks you want: # require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" require "active_resource/railtie" require "sprockets/railtie" # require "rails/test_unit/railtie"
再度、herokuへディプロイ。動作確認。。。
無事に動きました!
結論から言うと(2)config/application.rbの修正を実施すれば良いかと思います。
ActiveRecordを使用しないアプリも多々あるでしょうから、
覚えておいて損は無いと思います。
※2012/02/12追記
どうやら、(2)config/application.rbに
「require 'rails/all'」の一文が追加になっているアプリもあるようです。
その場合、ここが邪魔することもあるようなので、私の場合、
コメント化してます。そうするとエラーが発生しなくなります。