2012-02-21 9 views
0

Rails 3.2にアップグレードした後、レーキタスクはもうモデルを自動読み込みできません。Rails 3.2にアップグレードした後、私のレーキタスクが壊れてしまいました。

以下はレール3.1で働いていた:

09:04:14 /srv/www/gamersmafia/current$ rake --trace gm:update_default_skin_styles 
rake aborted!                 
No such file to load -- notification            
/usr/lib/ruby/gems/1.8/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:317:in `depend_on' 
/usr/lib/ruby/gems/1.8/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:225:in `require_dependency' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/engine.rb:439:in `eager_load!' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/engine.rb:438:in `each' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/engine.rb:438:in `eager_load!' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/engine.rb:436:in `each' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/engine.rb:436:in `eager_load!' 
/srv/www/gamersmafia/current/lib/tasks/update_games_and_factions_sprite.rake:1 
/usr/lib/ruby/gems/1.8/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:245:in `load' 
/usr/lib/ruby/gems/1.8/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:245:in `load' 
/usr/lib/ruby/gems/1.8/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:236:in `load_dependency' 
/usr/lib/ruby/gems/1.8/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:245:in `load' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/engine.rb:425:in `load_tasks' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/engine.rb:425:in `each' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/engine.rb:425:in `load_tasks' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/application.rb:145:in `load_tasks' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/railtie/configurable.rb:30:in `send' 
/usr/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/railtie/configurable.rb:30:in `method_missing' 
/srv/www/gamersmafia/current/Rakefile:7           
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load' 
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile' 
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile' 
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `load_rakefile' 
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile' 
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:65:in `run' 
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/bin/rake:33        
/usr/local/bin/rake:19:in `load'             
/usr/local/bin/rake:19 

私のアプリのコードは、あなたがここでそれを確認することができるようにオープンソース化される:

https://github.com/slnc/gamersmafia 

私が行っている唯一の変更は、追加することですa

"Rails.application.eager_load!"上に示したレーキタスクの開始点に移動します。これがなければ、 "Skins"ライブラリはロードされません。

UPDATE 私は上に示したスタックトレースの各ライン上に置いて文を追加することで、これをデバッグしようと、私はこのような何かを見ることができます:

eager_load_path: /srv/www/gamersmafia/current/app/mailers 
file found: /srv/www/gamersmafia/current/app/mailers/notification.rb 
require_dependency notification 
... notification 
rake aborted! 

おおよそレールが通知を発見されたことを示していると思われます。 rbファイルを読み込もうとすると、読み込めません。

+0

Rails 3.2には関係ないようです。私はRails 3.1に戻って失敗しました。私は最近ベンダー/プラグインから設定/初期化子にコードを移動させる多くのリファクタリングを行っており、それが今失敗している理由かもしれません。 –

+0

奇妙なことは、 "Rails.application.eager_load!"を追加する必要があることです。ライン。私の理解は、タスクに環境変数を追加すると、レールが強制的にロードされるということでした。 –

答えて

0
gem install notification 

はちょうどNo such file to load -- notificationrequire 'notification'に失敗したことを示して見て、トリックを行う可能性があります。

+0

ありがとうソロしかし、それは動作していないようです。私は "通知"と呼ばれるモデルを持っています、それはapp/mailers dirにあります。 –

関連する問題