在Rake任务中使用环境变量

问题描述 投票:0回答:2
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

ruby-on-rails environment-variables rake-task
2个回答
6
投票

两个好方法:

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

.env
:

VAR=value

然后运行

foreman run rake some_task

或者(并且,我推荐这种方式),使用“Figaro”宝石。将您的变量放入

config/application.yml
:

VAR: value

就是这样;

rake some_task

我推荐后者,因为

rake figaro:heroku
会按照
application.yml

中的指定推高你的环境

0
投票

以防万一有人寻找另一个决定。 我在生产服务器上的 rake 任务中获取 ENV 变量时遇到问题。 所以我有 application.yml 文件,但 ENV['variable'] 只是空白

我原来的命令:

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

添加 RAILS_ENV=product 解决了问题:

RAILS_ENV=production /usr/local/rvm/bin/rvm use 2.5.1 do bundle exec rake upload_source_maps_to_rollbar
© www.soinside.com 2019 - 2024. All rights reserved.