如何从resque作业中访问ENV变量

时间:2011-10-08 19:14:57

标签: ruby-on-rails ruby-on-rails-3 resque

如何确保resque可以访问我的所有ENV变量?我正在尝试从resque作业中发送一封电子邮件,因为动作邮件smtp用户名/通过ENV变量设置,所以无法发送。看起来甚至ENV ['RAILS_ENV']在resque作业中也不可用。

这是我的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 }

这是我的proc文件,它启动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 :(得分:0)

将它们添加到resque.rake

task "resque:setup" => :environment do
  # ... other stuff
  ENV['RAILS_ENV'] = Rails.env
end

答案 1 :(得分:-1)

嗯,我无法确定,但如果这是UNIX,即使没有语言功能来阅读ENV,open / proc / self / environ也能正常工作。

这当然是最后的手段。