task :some_task, :environment do |t, args|
puts Rails.env #=> development, production, etc
puts ENV #=> {}
end
我设置了一些环境变量(通过local.env,或者通过Herokusan通过Heroku Config),比如使用哪个AWS bucket,我想在rake任务中引用它们,但是ENV是一个空的hash。我知道由于:environment
任务依赖性和Rails.env
有一个值,一些与环境相关的事情被完成,但我不清楚细节。
那么,如何在Rake任务中使用ENV
?
2条答案
按热度按时间bnl4lu3b1#
有两个好方法:
使用Heroku的“Foreman”工具。将所有环境变量放入
.env
:运行
foreman run rake some_task
。或者(我推荐这种方式)使用“Figaro”gem。将您的var放入
config/application.yml
:就是这样
rake some_task
。我建议使用后者,因为
rake figaro:heroku
会像application.yml
中指定的那样提升您的envdkqlctbz2#
以防有人想再做决定。我在生产服务器上的rake任务中获取ENV变量时遇到了麻烦。所以我有application.yml文件,但ENV [变量]只是空白
我最初的命令:
添加RAILS_ENV=生产解决了问题: