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

发布于 2024-12-08 23:59:42 字数 968 浏览 0 评论 0原文

如何确保 resque 可以访问我的所有 ENV 变量?我试图从 resque 作业中发送电子邮件,但它无法发送,因为 actionmailer 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 }

这是启动 redis/resque/resque 工作程序的 procfile

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

How do I make sure resque has access to all my ENV variables? I'm trying to send an email from within a resque job and it cannot send because the actionmailer smtp username/pass are set via ENV variables. It looks like even ENV['RAILS_ENV'] is not available from within the resque job.

Here's my resque.rake file:

# 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

Here's my resque.rb initializer:

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

Here's my procfile that starts 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

允世 2024-12-15 23:59:42

将它们添加到resque.rake中

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

Add them to resque.rake

task "resque:setup" => :environment do
  # ... other stuff
  ENV['RAILS_ENV'] = Rails.env
end
凉月流沐 2024-12-15 23:59:42

好吧,我不能确定,但​​如果这是 UNIX,即使没有读取 ENV 的语言工具, open /proc/self/environ 也可以工作。

当然,这是最后的手段。

Well I can't tell for sure but if this is UNIX, open /proc/self/environ will work even if there's no language facility to read ENV.

This is, of course, last resort.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文