在Rake任务中使用环境变量

task :some_task, :environment do |t, args| puts Rails.env #=> development, production, etc puts ENV #=> {} end 

我设置了一些环境变量(通过本地.env,或通过Herokusan通过Heroku Config),例如要使用哪个AWS桶,我想在rake任务中引用它们,但ENV是一个空哈希。 我知道与环境有关的事情因为:environment任务依赖而且Rails.env有一个值,但我不清楚细节。

那么,我如何在Rake任务中使用ENV

两种好方法:

使用Heroku的“Foreman”工具。 将所有环境变量放入.env

 VAR=value 

并运行foreman run rake some_task

或者(并且,我推荐这种方式),使用“费加罗”gem。 将你的vars放入config/application.yml

 VAR: value 

就是这样; rake some_task

我推荐后者,如果只是因为rake figaro:heroku将推动你的环境,因为它在application.yml指定