【发布时间】:2011-05-17 01:27:12
【问题描述】:
我的简单 rake 任务,存储在 lib/tasks/items_spider.rake 中,在开发中运行良好。它所做的只是在Item 模型上调用spider!。
namespace :items do
desc "Spider the web for data, hoorah"
task :spider => :environment do
Item.spider!
end
end
我有 :environment 任务作为依赖项,所以一切正常。但是,当我添加 RAILS_ENV=production 时,我在本地服务器和生产服务器上都遇到了错误:
$ rake items:spider RAILS_ENV=production --trace
(in /home/matchu/Websites/my-rails-app)
** Invoke items:spider (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute items:spider
rake aborted!
uninitialized constant Object::Item
/home/matchu/.rvm/gems/ruby-1.9.2-preview3@rails3/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing'
/home/matchu/.rvm/gems/ruby-1.9.2-preview3@rails3/gems/rspec-core-2.0.0.beta.22/lib/rspec/core/backward_compatibility.rb:20:in `const_missing'
/home/matchu/.rvm/gems/ruby-1.9.2-preview3@rails3/gems/rspec-expectations-2.0.0.beta.22/lib/rspec/expectations/backward_compatibility.rb:6:in `const_missing'
/home/matchu/Websites/openneo-impress-items/lib/tasks/items_spider.rake:4:in `block (2 levels) in <top (required)>'
/home/matchu/.rvm/gems/ruby-1.9.2-preview3@rails3/gems/rake-0.8.7/lib/rake.rb:636:in `call'
[...trace of how rake gets to my task...]
这对我来说似乎很奇怪。显然模型没有正确加载。我在 Rails 3.0.3 上,虽然这个应用程序的开发可以追溯到 Rails 3 处于测试阶段时。我该如何调试这个问题?谢谢!
【问题讨论】:
-
这里有点意思,但是您是否尝试过将 RAILS_ENV 声明移动到命令的开头?
-
Item模型保存在哪里?常去的地方? -
@Ryan:嗯。
app/models/item.rb -
现在去睡觉了;不知何故,我现在才想到用其他模型进行测试。明天试试 :) 谢谢!
标签: ruby-on-rails ruby-on-rails-3 rake