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


120

根据“ 自定义耙任务 ”:

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


Answers:


120

通过使任务依赖于环境任务,您可以访问模型,实际上是整个环境。这使您可以执行run rake RAILS_ENV=staging db:migrate

请参阅“ 自定义耙任务 ”。


4
源代码在哪里定义?我发现了rake任务的位置,并且找到了一个空的任务定义,该定义取决于'app:environment',但是我找不到app:environment任务的定义。 github.com/rails/rails/blob/master/railties/lib/rails/tasks/…–
odigity


41

它会加载到您的Rails环境中,因此您可以实际使用模型,而不能使用模型。否则,它对这些事情一无所知。

因此,如果您完成的任务刚刚完成,puts "HI!"则无需将该:environment任务添加到依赖项中。但是,如果您希望做得User.find(1)很好,那将需要它。


35

其中包括=> :environment将告诉Rake加载整个应用程序环境,并为相关任务提供对类,助手等之类的访问权限。没有:environment,您将无权访问任何这些额外功能。

另外=> :environment本身并没有提供任何与环境有关的变量,例如environment@environmentRAILS_ENV等。


任务文档的方法太简单了,难以理解。
Albert.Qing 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.