2012-02-21 67 views
0

升級到Rails 3.2後,我的rake任務無法自動加載模型。升級到Rails 3.2後,我的rake任務被破壞

以下是以工作軌道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!」行到上面顯示的rake任務的開始。沒有它,它不會加載「皮膚」庫。

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! 

這大致似乎表明Rails是找到通知。 rb文件,但當它試圖加載它不能。

+0

看起來它與Rails 3.2無關。我回到了Rails 3.1,它也失敗了。我最近做了很多重構,將代碼從供應商/插件移植到config/initializers中,這可能是現在失敗的原因。 – 2012-02-21 08:51:14

+0

奇怪的是我必須添加一個「Rails.application.eager_load!」線。我的理解是,爲任務添加一個:環境參數將強制導軌加載。 – 2012-02-21 08:53:44

回答

0
gem install notification 

也許只是做的伎倆,看到No such file to load -- notification表示一個require 'notification'失敗。

+0

感謝獨奏,但似乎並不奏效。我有一個名爲「通知」的模型,它在應用程序/郵件程序目錄中。 – 2012-02-21 08:23:08

相關問題