0

У меня есть проблемы с Redis pub/sub в RoR в режиме производства.
У меня есть 3 экземпляра: сервер RoR, узел сервер и задача Rake и модель в некотором состоянии (модель состоянии 1)RoR + Node.js Redis sub/pub на производстве

  1. RoR сервер обновляет модель с идентификатором = 1 и опубликовать событие «один» в Redis. (Модель состояние 2)

  2. Node.js сервер подписался на Redis события «один» получает сообщение, делать что-то и опубликовать событие «два» в Redis с некоторыми данными

  3. Rake задача в Rails ENV подписавшихся на Redis событие 'два' получает сообщение и обновление модели с данными сообщения (состояние Model 3)

Некоторое время спустя:

  1. Node.js сервер публиковать событие 'три' в Redis с Типовым идентификатором.
  2. же грабли задача подписалась на событие «три» получает сообщение и найти модель, полученного идентификатор (Model.find_by (ID: сообщение [: идентификатор])) и получает модель состояния 1, но не состояние модели 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 

ответ

0

Проблема решена задача запуска рейк в режиме производства

bundle exec rake some:task RAILS_ENV=production 
Смежные вопросы