2013.05.24 更新
長い格闘の末、このエラーはroutes.rbでdevise_forを呼ぶ前にactive_record/baseを強制的にrequireすることで発生しなくなりました。
# config/routes.rb require 'active_record/base' # この行を追加 devise_for :users
今まで4〜5回ぐらいデプロイしましたが、一度も再発していないので、おそらく効果が出ていると思います。
根本原因は最後までわからなかったので、アドホック対応です。んぐぐ。
2013.05.21 更新
また再発してしまいました。
なので、原因と対策は間違っていたようです。
どうもすいません。。。
よく分からないエラーに遭遇して困ったのでメモしておきます。
エラーの内容
Herokuにデプロイすると、以下のようなエラーが出て「H10 App crashed」エラーが出る。
app/web.1: /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/dynamic_matchers.rb:55:in `method_missing': undefined method `create_reflection' for #<Class:0x00000003022238> (NoMethodError)
原因
Deviseが悪さをしてるっぽい?
app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:588:in `constantize' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise.rb:267:in `get' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise/mapping.rb:77:in `to' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise/mapping.rb:72:in `modules' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise/mapping.rb:89:in `routes' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise/mapping.rb:156:in `default_used_route' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise/mapping.rb:66:in `initialize' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise.rb:301:in `new' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise.rb:301:in `add_mapping' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise/rails/routes.rb:208:in `block in devise_for' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise/rails/routes.rb:207:in `each' app/web.1: from /app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.3/lib/devise/rails/routes.rb:207:in `devise_for' app/web.1: from /app/config/routes.rb:21:in `block in <top (required)>'
対処方法
Deviseを最新版にしたら直った。
$ bundle update devise # 2.2.3 => 2.2.4
同じようなエラーに遭遇した人は参考にしてみてください〜。
参考にしないで (><)