ruby-on-rails 在Rake任务中使用环境变量

v64noz0r  于 2023-10-21  发布在  Ruby
关注(0)|答案(2)|浏览(148)
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

bnl4lu3b

bnl4lu3b1#

有两个好方法:
使用Heroku的“Foreman”工具。将所有环境变量放入.env

VAR=value

运行foreman run rake some_task
或者(我推荐这种方式)使用“Figaro”gem。将您的var放入config/application.yml

VAR: value

就是这样rake some_task
我建议使用后者,因为rake figaro:heroku会像application.yml中指定的那样提升您的env

dkqlctbz

dkqlctbz2#

以防有人想再做决定。我在生产服务器上的rake任务中获取ENV变量时遇到了麻烦。所以我有application.yml文件,但ENV [变量]只是空白
我最初的命令:

/usr/local/rvm/bin/rvm use 2.5.1 do bundle exec rake upload_source_maps_to_rollbar

添加RAILS_ENV=生产解决了问题:

RAILS_ENV=production /usr/local/rvm/bin/rvm use 2.5.1 do bundle exec rake upload_source_maps_to_rollbar

相关问题