生产中的RoR + Node.js Redis子/ pub

时间:2015-10-29 06:15:11

标签: ruby-on-rails node.js redis production-environment rake-task

我在生产模式下使用RoR中的Redis pub / sub遇到了一些麻烦 我有3个实例:RoR服务器,节点服务器和Rake任务和模型处于某种状态(模型状态1)

  1. RoR服务器更新ID = 1的模型并发布事件'一个'到Redis。 (模型状态2)

  2. Node.js服务器订阅了Redis事件'一个'得到消息,做某事并发布事件'两个'带有一些数据的Redis

  3. Rails环境中的Rake任务订阅了Redis活动'两个'获取消息并使用消息数据更新模型(模型状态3)
  4. 一段时间后:

    1. Node.js服务器发布事件'三'与模型ID的Redis。
    2. 同样的rake任务订阅了事件'三'获取消息并通过收到的id(Model.find_by(id:message [:id]))查找模型并获取模型状态1,但不获取模型状态3.
    3. 仅在生产模式的情况下观察到。在开发模式下,rake任务获得模型状态3,一切正常。

      development.rb

      Rails.application.configure do
        config.cache_classes = false
        config.eager_load = false
        config.consider_all_requests_local       = true
        config.action_controller.perform_caching = false
        config.action_mailer.raise_delivery_errors = false
        config.active_support.deprecation = :log
        config.active_record.migration_error = :page_load
        config.assets.debug = true
        config.assets.digest = true
        config.assets.raise_runtime_errors = true
      end
      

      production.rb

      Rails.application.configure do
        config.cache_classes = true
        config.eager_load = true
        config.consider_all_requests_local       = false
        config.action_controller.perform_caching = true
        config.serve_static_files = true
        config.assets.js_compressor = :uglifier
        config.assets.compile = true
        config.assets.digest = true
        config.log_level = :debug
        config.i18n.fallbacks = true
        config.active_support.deprecation = :notify
        config.log_formatter = ::Logger::Formatter.new
        config.active_record.dump_schema_after_migration = false
      end
      

1 个答案:

答案 0 :(得分:0)

问题解决了在生产模式下启动rake任务

bundle exec rake some:task RAILS_ENV=production