如何从Resque作业内部访问ENV变量

4

如何确保resque可以访问所有的环境变量?我试图在resque任务中发送电子邮件,但是无法发送,因为actionmailer SMTP用户名/密码是通过ENV变量设置的。看起来,即使在resque任务内部,ENV ['RAILS_ENV']也不可用。

这是我的resque.rake文件:

# Run to start:
# rake resque:work QUEUE='*'
require 'resque/tasks'
require 'resque_scheduler/tasks'

task "resque:setup" => :environment do
  require 'resque'
  require 'resque_scheduler'
  require 'resque/scheduler'

  Resque.schedule = YAML.load_file("#{Rails.root}/config/resque_schedule.yml")
end

这是我的resque.rb初始化文件:

require 'resque_scheduler'
Resque.redis = 'localhost:6379'
Dir["#{Rails.root}/app/jobs/*.rb"].each { |file| require file }

这是我的 procfile,它可以启动 Redis、Resque 和 Resque Worker。
mongo:            mongod
redis-server:     redis-server /usr/local/etc/redis.conf
scheduler:        bundle exec rake resque:scheduler
worker:           bundle exec rake resque:work QUEUE=images, notifications
2个回答

0
将它们添加到resque.rake文件中。
task "resque:setup" => :environment do
  # ... other stuff
  ENV['RAILS_ENV'] = Rails.env
end

-1

我不能确定,但如果这是UNIX系统,打开/proc/self/environ将起作用,即使没有语言功能来读取ENV。

当然,这只是最后的手段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接