Rake的“环境”任务是什么?

时间:2011-08-12 18:32:38

标签: ruby-on-rails rake

根据“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

3 个答案:

答案 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@environmentRAILS_ENV