【问题标题】:Rails custom environment Resque.enqueue does not create jobsRails 自定义环境 Resque.enqueue 不会创建作业
【发布时间】:2013-06-26 23:21:32
【问题描述】:

我将Resque 用于几个异步作业。我设置了一个自定义环境integration,它是我的production 环境的克隆。但是,在我的 integration 环境中,我的 Resque 作业不会添加到 Redis

例如,如果我运行以下命令:

$ RAILS_ENV=production rails console
> Resque.enqueue(MyLovelyJob, 1)

我会看到作业出现在 resque-web 中。

但是,如果我运行以下命令:

$ RAILS_ENV=integration rails console
> Resque.enqueue(MyLovelyJob, 1)

作业没有出现在 resque-web 中。

显然我缺少某种配置,我正在努力弄清楚它是什么。

【问题讨论】:

    标签: redis resque


    【解决方案1】:

    首先没有什么期望。

    你有一个config/resque_config.rb 或类似的:

    require 'rubygems'
    
    require 'resque' # include resque so we can configure it
    require 'resque/server'
    require 'resque_scheduler'
    require 'resque_scheduler/server'
    require 'yaml'
    
    Resque.redis.namespace = "resque:api"
    
    rails_root = ENV['APP_ROOT'] || (File.dirname(__FILE__) + '/..')
    # require File.expand_path(File.join(rails_root,"lib","extensions","resque","worker.rb"))
    
    rails_env = RAILS_ENV if defined? RAILS_ENV
    rails_env ||= ( ENV['RAILS_ENV'] || 'development' )
    
    resque_config = YAML.load_file(File.join(rails_root, 'config/resque.yml'))
    Resque.redis = resque_config[rails_env]
    
    # IN THIS ORDER
    Resque::Scheduler.dynamic = true
    Resque.schedule = YAML.load_file(File.join(rails_root, 'config/resque_schedule.yml')) # load the schedule
    

    还有config/resque.yml 或类似的:

    development: localhost:6379
    test: localhost:6379
    integration: localhost:6379
    staging: localhost:6379
    production: localhost:6379
    

    integration 将打开/与不同的服务器通信或使用不同的端口。然后你让它运行它自己的 Redis 服务器,这样 2 就不会重叠。 我想您不希望生产和集成将事物排队到同一个地方?

    【讨论】:

      【解决方案2】:

      这是我为解决问题所做的:

      我创建了config/initializers/resque.rb,内容如下:

      rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../..'
      rails_env = ENV['RAILS_ENV'] || 'development'
      
      resque_config = YAML.load_file(rails_root + '/config/resque.yml')
      Resque.redis = resque_config[rails_env]
      

      我还使用以下内容创建了config/resque.yml(显然这些应该设置为合适的):

      development: localhost:6379
      test: localhost:6379
      integration: localhost:6379
      staging: localhost:6379
      production: localhost:6379
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-17
        • 1970-01-01
        • 2020-09-10
        • 1970-01-01
        相关资源
        最近更新 更多