Проблема Phusion Passenger с запуском daemon_controller для delayed_job? - PullRequest
0 голосов
/ 11 февраля 2011

Когда пассажир запускает мое веб-приложение Process.spawn, в daemon_controller выдается исключение ArgumentError с сообщением wrong exec option.

Когда я запускаю rails console production на моем сервере, этот же кусок кода срабатывает, но работает нормально, и тогда я могу получить доступ к своему приложению из Интернета.

После небольшой отладки я обнаружил, что когда rails console production вызывает Process.spawn, он передается:

Process.spawn("export RAILS_ENV=production; script/delayed_job restart",
              {#<IO:<STDIN>> => "/dev/null",
               #<IO:<STDOUT>> => "/tmp/daemon-output20110210-15497-20fi88", 
               #<IO:<STDERR>> => "/tmp/daemon-output20110210-15497-20fi88",
               :close_others=>true}

Чтобы Пассажир мог вызвать этот код, я запускаю touch tmp/restart.txt и затем захожу в приложение из Интернета. Когда Пассажир вызывает Process.spawn, он передается:

Process.spawn("export RAILS_ENV=production; script/delayed_job restart",
              {#<IO:<STDIN>> => "/dev/null",
               #<IO:<STDOUT>> => "/tmp/daemon-output20110210-15016-kiik39",
               #<PhusionPassenger::Utils::PseudoIO:0x8aaa5ac @sink=#<IO:<STDERR>>, @buffer=#<StringIO:0x8aaa598>> => "/tmp/daemon-output20110210-15016-kiik39",
               :close_others=>true}

Process.spawn, похоже, не нравится этот объект PseudoIO и выдает ArgumentError исключение с сообщением wrong exec option.

Для драгоценных камней я использую:
rails 3.0.3
passenger 3.0.2
demon_controller 0.2.5

Будем весьма благодарны за любые мысли о том, как заставить daemon_controller работать с Passenger.

1 Ответ

0 голосов
/ 12 февраля 2011

Вместо звонка

Process.spawn(..., STDERR => ...)

вызов

Process.spawn(..., :err => ...)
...