2014-02-11 2 views
2

나는 Capistrano를 사용하여 배포 한 Rails 3 앱이 있습니다. 나는 최근에 Sidekiq을 추가했다. 그것은 내 발달에 잘 작동합니다. 동일한 서버에 stagingpreview을 모두 호스팅하고 있으며 제대로 작동하지 않는 미리보기입니다. 미리보기에서 작업자를 트리거하면 준비로 이동하여 준비 데이터베이스에 도달합니다. 동일한 서버에 2 개의 sidekiq 프로세스를 공존시키기위한 구성이 누락 되었습니까?Rails + Sidekiq : 잘못된 환경에서 실행되는 Sidekiq

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 

그것은 모순이다 :

여기 내 deploy.rb입니다. 미리보기에서 나는 작업자를 트리거하는 작업을 수행했고, 4 번 작업 준비를 완료했습니다 (로그와 콘솔에서 볼 수 있음). 그리고 예상했던 것처럼 미리 한 번 눌렀습니다.

내가 누락 된 항목이 있습니까?

답변

2

찾고있는 솔루션은 네임 스페이스와 관련이 있다고 생각합니다.

https://github.com/mperham/sidekiq/wiki/Advanced-Options#wiki-using-sidekiqs-configure-blocks

이것은 내 초기화에 사용하는 것입니다.

Sidekiq.configure_server do |config| 
    config.redis = { url:  'redis://localhost:6379/0', 
        namespace: "sidekiq_#{Rails.application.class.parent_name}_#{Rails.env}".downcase } 
end 

Sidekiq.configure_client do |config| 
    config.redis = { url:  'redis://localhost:6379/0', 
        namespace: "sidekiq_#{Rails.application.class.parent_name}_#{Rails.env}".downcase } 
end 
+0

LOL은 문서에서 바로 파생 된 정답을 위해 downvoted ... classic. FWIW redis는 "환경"그 자체가 다른 네임 스페이스가 없으므로 올바른 환경에 연결하고 있는지 확인하는 것이 좋습니다. – engineerDave

+0

올바르게 작동합니다. 나는 시험했다. 이 답변에 더 많은 정보를 추가하기 위해서, Sidekiq는 RAILS_ENV envoronment 변수가 설정되어 있다면 실행될 것이며, 명령 행에서 -e [YOUR_ENV]를 사용할 것입니다. 예 : 'bundle exec sidekiq -e production' – user1735921

0

그래서 Sidekq에 대해 설정 한 작업자 및 모든 구성뿐만 아니라 작업이 무엇인지 확인하는 데 도움이됩니다. 당신이 카피 스트라 노를 사용하고 있기 때문에, 또한이 아마 나쁜 솔루션이지만, 적어도이 장애물 과거의 당신을 얻을 수 있습니다 당신이

Sidekiq

https://github.com/mperham/sidekiq/wiki/Deployment 대한 구성을 설정해야합니다. 다른 redis queue를 설정할 수 있으므로 준비 대기열과 미리보기 대기열을 만들 수 있습니다. 실제로 작동하려면, 당신은 당신의 직원에서 0

https://github.com/mperham/sidekiq/wiki/Advanced-Options#wiki-queues

로 검사의 주파수를 사용하지 않을거야 대기열을 설정해야 할 수도 있습니다,

sidekiq_options :queue => QUEUE 

및 설정을 추가하는 시도 무대 환경에서는 QUEUE = :staging이고 미리보기 환경에서는 QUEUE = :preview입니다.