在Rake任务中使用环境变量

Nar*_*tor 5 ruby-on-rails environment-variables rake-task

task :some_task, :environment do |t, args|
  puts Rails.env #=> development, production, etc
  puts ENV #=> {}
end
Run Code Online (Sandbox Code Playgroud)

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

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

Nar*_*tor 5

两种好方法:

使用Heroku的"Foreman"工具.将所有环境变量放入.env:

VAR=value
Run Code Online (Sandbox Code Playgroud)

并运行foreman run rake some_task.

或者(并且,我推荐这种方式),使用"费加罗"宝石.把你的vars放入config/application.yml:

VAR: value
Run Code Online (Sandbox Code Playgroud)

就是这样; rake some_task.

我推荐后者,只是因为rake figaro:heroku它会按照指定的方式推动你的环境application.yml

  • 我知道这是一个老问题,但是将它们放入 .env 文件或 application.yml 中如何使您的密码/密钥远离代码库?我认为这是使用 ENV 变量的一个重要原因。我们是否可以从 Rake 进行一些调用来获取它们? (2认同)