Ruby Daemon вешает на рельсы груз - PullRequest
0 голосов
/ 28 апреля 2009

У меня проблемы с корректной работой рабочего демона. Когда я бегу:

ruby script/workling_client run

демон начинает загружать рельсы, но зависает бесконечно. Когда я убиваю процесс, трассировка стека всегда одинакова:

/Library/Ruby/Gems/1.8/gems/activesupport-2.1.2/lib/active_support/core_ext/load_error.rb:32:in `new': Interrupt
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:510:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:355:in `new_constants_in'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:510:in `require'
from /Library/Ruby/Gems/1.8/gems/httpclient-2.1.2/lib/httpclient.rb:68
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
 ... 81 levels...
from /Library/Ruby/Gems/1.8/gems/daemons-1.0.10/lib/daemons/cmdline.rb:105:in `call'
from /Library/Ruby/Gems/1.8/gems/daemons-1.0.10/lib/daemons/cmdline.rb:105:in `catch_exceptions'
from /Library/Ruby/Gems/1.8/gems/daemons-1.0.10/lib/daemons.rb:138:in `run'
from script/workling_client:18

Если я запускаю скрипт без библиотеки демонов, он работает как положено. На самом деле у меня возникли проблемы с использованием гема демона для загрузки всего, что требует моей среды rails. Есть идеи?

ОБНОВЛЕНИЕ: workling_client загружает worklings listen.rb в качестве демона. Вместо того, чтобы загружать rails в listen.rb, я изменил его так, чтобы он загружался в workling_client, и процесс работает без проблем. Поэтому по какой-то причине я не могу загрузить рельсы в демонизированном скрипте: - (

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Можете ли вы опубликовать код, который запускает скрипт демона? Я знаю, что можно загружать рельсы в скрипте демонов, так как мы делаем это для нашего скрипта delayed_jobs.

Начальная часть скрипта выполняет:

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config',
      'environment'))

настроить для вашего файла environment.rb в вашем проекте rails. Затем процесс переходит к демонизации самого себя:

Worker::Command.new(ARGV, :workers => worker_config).daemonize

Наш скрипт загружает рельсы перед выполнением шага демона. Если это не работает, укажите, как ваш скрипт загружает рельсы.

0 голосов
/ 30 ноября 2010

Попробуйте начать работать без монитора:

options = {
  :app_name   => "workling",
  :ARGV       => ARGV,
  :dir_mode   => :normal,
  :dir        => File.join(File.dirname(__FILE__), '..', 'log'),
  :log_output => true,
  :multiple   => false,
  :backtrace  => true,
  :monitor    => false
}
...