У меня есть приложение Rails 3, которое я развертываю с помощью Capistrano. Недавно я добавил Sidekiq. Он отлично работает в моем развитии. Я размещаю как staging
, так и preview
на том же сервере, и это предварительный просмотр, который не работает должным образом. Когда я запускаю рабочий на предварительном просмотре, он переходит в стадию и попадает в промежуточную базу данных. Мне недостает конфигурации, чтобы иметь 2 параллельных процесса сосуществования на одном сервере?Rails + Sidekiq: Sidekiq работает в неправильной среде
Вот мой deploy.rb:
require "bundler/capistrano"
require 'sidekiq/capistrano' #<-- sidekiq
load "lib/deployer/deployer.rb"
set :application, "myapp"
set :scm, :git
set :repository, ...
set :scm_passphrase, ""
defaults
global_defaults
set :stages, ["staging", "preview"]
task :staging do
set :rails_env, "staging"
set :user, "deployer"
server "myserver.com", :app, :web, :db, :primary => true
defaults
end
task :preview do
set :rails_env, "preview"
set :user, "deployer"
server "myserver.com", :app, :web, :db, :primary => true
defaults
end
Это непоследовательно. В предварительном просмотре я только что сделал действие, которое запускает рабочего, и 4 раза оно перешло в стадию (я мог видеть как в журнале, так и в консоли), и 1 раз он попадал в превью, как и предполагалось.
Я что-то упустил?
LOL downvoted для правильного ответа, полученного прямо из документов ... классического. FWIW redis не имеет «среды» как такового, просто разных пространств имен, поэтому вам лучше убедиться, что вы подключаетесь к правильному. – engineerDave
Это работает правильно. Я тестировал. Чтобы также добавить дополнительную информацию к этому ответу, Sidekiq будет запускаться в переменной RAVS_ENV envoronment, если он установлен, или он будет использовать -e [YOUR_ENV], если он установлен в командной строке. Пример: 'bundle exec sidekiq -e production' – user1735921