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

根据“ 自定义Rake任务 ”:

desc "Pick a random user as the winner" task :winner => :environment do puts "Winner: #{pick(User).name}" end 

据我所知, :winner => :environment意思是“做winner之前的environment ”。 但是什么是environment ? 我应该什么时候使用它?

我试过rake -T ,但在列表中我找不到environment

您可以访问您的模型,实际上,您可以通过使任务依赖于环境任务来访问整个环境。 这可以让你做一些事情,比如run rake RAILS_ENV=staging db:migrate

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

它加载到你的Rails环境中,所以你可以真正使用你的模型,而不是。 否则,它不知道这些事情。

所以如果你做了一个任务, puts "HI!" 那么您不需要将:environment任务添加到依赖项。 但是,如果你想做一些像User.find(1)那么需要它。

包括=> :environment将告诉Rake加载完整的应用程序环境,给予相关的任务访问像类,助手等东西。没有:environment ,你将无法访问任何这些额外的东西。

另外=> :environment本身不提供任何与环境相关的variables,例如environment@environmentRAILS_ENV