Когда пассажир запускает мое веб-приложение 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.