根据“Custom Rake Tasks”:
desc "Pick a random user as the winner"
task :winner => :environment do
puts "Winner: #{pick(User).name}"
end
据我所知,:winner => :environment
表示“在environment
之前执行winner
”。但是environment
是什么?我什么时候应该使用它?
我尝试了rake -T
,但在列表中我找不到environment
。
答案 0 :(得分:109)
通过使任务依赖于环境任务,您可以访问模型,实际上是整个环境。这使您可以执行run rake RAILS_ENV=staging db:migrate
。
请参阅“Custom Rake Tasks”。
答案 1 :(得分:37)
它会在您的Rails环境中加载,因此您可以实际使用您的模型,而不是。否则,它不知道那些事情。
因此,如果您创建的任务只是puts "HI!"
,那么您不需要将:environment
任务添加到依赖项中。但是如果你想做一些像User.find(1)
那样需要它的东西。
答案 2 :(得分:29)
包括=> :environment
将告诉Rake加载完整的应用程序环境,让相关任务访问类,帮助程序等等。如果没有:environment
,您将无法访问任何那些额外的东西。
同样=> :environment
本身不提供任何与环境相关的变量,例如environment
,@environment
,RAILS_ENV
等