2015-09-19 4 views
1

Я использую Форман и Capistrano для развертывания моего рельса. Процесс web (т. Е. Puma) запускается правильно, но я не могу получить свой worker (i.e sidekiq) для работы в качестве среды production.Невозможно запустить sidekiq в производстве (Procfile + systemd)

Я приспособил файл app-worker-1.service сгенерированных в Systemd экспорта связывая, чтобы заставить среду быть установлено правильно, без успеха:

[Unit] 
StopWhenUnneeded=true 

[Service] 
User=deployment_user 
WorkingDirectory=/var/www/app_name/current 
ExecStart=/bin/bash -lc "RAILS_ENV=production bundle exec sidekiq -e production" 

RestartSec=1 
Restart=on-failure 

StandardOutput=journal 
StandardError=journal 

SyslogIdentifier=%n 

KillMode=process 

Я попробовал все ... Я добавил Logger.debug заявление, что показывает RACK_ENV и RAILS_ENV установлены неверно на development.

Вот ошибка, я получаю от журнала процесса:

I, [2015-09-19T13:56:14.813528 #31187] INFO -- : Celluloid 0.17.1.2 is running in BACKPORTED mode. [ http://git.io/vJf3J ] 
D, [2015-09-19T13:56:16.765338 #31187] DEBUG -- : RACK_ENV=development 
D, [2015-09-19T13:56:16.766057 #31187] DEBUG -- : RAILS_ENV=development 
'development' database is not configured. Available: ["production"] 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:248:in `resolve_symbol_connection' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:211:in `resolve_connection' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:139:in `resolve' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:169:in `spec' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_handling.rb:50:in `establish_connection' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/active_record/railtie.rb:120:in `block (2 levels) in <class:Railtie>' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:38:in `execute_hook' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:28:in `block in on_load' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:27:in `each' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:27:in `on_load' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/active_record/railtie.rb:116:in `block in <class:Railtie>' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/initializable.rb:30:in `instance_exec' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/initializable.rb:30:in `run' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/initializable.rb:55:in `block in run_initializers' 
/usr/local/rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/tsort.rb:226:in `block in tsort_each' 
/usr/local/rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component' 
/usr/local/rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/tsort.rb:429:in `each_strongly_connected_component_from' 
/usr/local/rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/tsort.rb:347:in `block in each_strongly_connected_component' 
/usr/local/rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/tsort.rb:345:in `each' 
/usr/local/rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/tsort.rb:345:in `call' 
/usr/local/rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/tsort.rb:345:in `each_strongly_connected_component' 
/usr/local/rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/tsort.rb:224:in `tsort_each' 
/usr/local/rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/tsort.rb:203:in `tsort_each' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/initializable.rb:54:in `run_initializers' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/application.rb:352:in `initialize!' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/railtie.rb:194:in `public_send' 
/var/www/app_name/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/railtie.rb:194:in `method_missing' 
/var/www/app_name/releases/20150918131757/config/environment.rb:12:in `<top (required)>' 
... 
+0

http://stackoverflow.com/questions/27657870/whenever-cron-job-in-rails-fails-with-production-database-is-not-configured-er – psantos

ответ

0

Нашел!

Сначала я включил отладку на Systemd:

Environment=SYSTEMD_LOG_LEVEL=debug 

Затем, глядя в журнал моих услуг, мое внимание было обращено на сообщение, которое выглядело несвязанным на первом побуждая смотреть на состоянии самой услуги ...

[email protected]:/lib/systemd/system$ systemctl status app_name-worker-1.service 
● alagarderie-web-1.service 
    Loaded: error (Reason: Invalid argument) 
    Active: inactive (dead) since Sat 2015-09-19 20:25:14 EDT; 35min ago 
Main PID: 32292 (code=exited, status=0/SUCCESS) 

... 
... the first line are not important ... 
... 
Warning: alagarderie-web-1.service changed on disk. Run 'systemctl daemon-reload' to reload units. 

Предупреждение, ЧТО! Я знал, что буду ненавидеть себя, когда найду проблему ...

Изменения в файле сценария SystemD не синхронизируются автоматически. Я перезагрузил приложение для своего приложения, а затем начал его; и вуаля!

0

Sidekiq предлагает пример Systemd блок-файл, который может быть полезным. Он показывает, как правильно настроить среду с -e:

https://github.com/mperham/sidekiq/blob/master/examples/systemd/sidekiq.service

ExecStart=/usr/local/bin/bundler exec sidekiq -e production 
+0

Я знаю ... Я это setup Я пробовал сначала! Не повезло, хотя RAILS_ENV все еще задано «разработкой». – gcauchon