【问题标题】:Why is Sidekiq running in development environment on server?为什么 Sidekiq 在服务器上的开发环境中运行?
【发布时间】:2018-08-30 18:32:19
【问题描述】:

在我的nginx网站配置文件中(/etc/nginx/sites-available/my_website我已经设置:

passenger_env_var RAILS_ENV staging;

我正在使用 Sidekiq 发送电子邮件,开始是这样的:

bundle exec sidekiq -q mailers -d -L log/sidekiq.log

但我的 Sidekiq 将环境设置为 development。为什么?

启动sidekiq时是否必须明确设置环境?我以为它是由 nginx 配置设置的。

谢谢

【问题讨论】:

    标签: ruby-on-rails environment-variables sidekiq


    【解决方案1】:

    Sidekiq 的默认环境是development。设置它的一种方法是像这样运行sidekiq

    bundle exec sidekiq --environment production
    

    【讨论】:

    • 好的,所以当我想在生产中运行它时,我必须这样设置:RAILS_ENV=production bundle exec sidekiq -q mailers -d -L log/sidekiq.log?
    • 好吧,我正在检查您发送的链接中的代码,真正的问题是为什么没有从 nginx 配置中设置 ENV["RAILS_ENV"]?
    • Sidekiq 与 nginx 或乘客无关——他们不共享配置。
    【解决方案2】:

    可以通过在initializers/sidekiq.rb下创建文件来配置

    If Rails.env.development?
      Sidekiq.configure_server do |config|
        config.redis = { url: 'redis://localhost:6379/0', namespace: "name_{Rails.env}" }
      end
    
      Sidekiq.configure_client do |config|
        config.redis = { url: 'redis://localhost:6379/0', namespace: "name_{Rails.env}" }
      end
    elsif Rails.env.staging?
      Sidekiq.configure_server do |config|
        config.redis = { url: 'redis://redis-xx.xxxx.xxxx.xx.xxx.amazonaws.com:6379/12', namespace: "name_#{Rails.env}" }
      end
    
      Sidekiq.configure_client do |config|
        config.redis = { url: 'redis://redis-xx.xxxx.xxxx.xx.xxx.amazonaws.com:6379/12', namespace: "name_#{Rails.env}" }
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 2014-10-12
      • 2018-09-06
      • 2010-11-02
      • 2011-04-02
      • 2013-01-19
      • 2014-10-19
      相关资源
      最近更新 更多