Демоны Ruby не запустятся
Вопрос
Я использую драгоценный камень ruby daemons для создания пользовательского демона для моего проекта rails.Единственная проблема заключается в том, что когда я пытаюсь запустить демонов ruby lib/daemons/test_ctl start
что он выходит из строя и не запускается.Файл журнала содержит следующие выходные данные.
# Logfile created on Wed Oct 22 16:14:23 +0000 2008 by /
*** below you find the most recent exception thrown, this will be likely (but not certainly) the exception that made the application exit abnormally \*\*\*
# MissingSourceFile: no such file to load -- utf8proc_native
*** below you find all exception objects found in memory, some of them may have been thrown in your application, others may just be in memory because they are standard exceptions ***
# NoMemoryError: failed to allocate memory>
# SystemStackError: stack level too deep>
# fatal: exception reentered>
# LoadError: no such file to load -- daemons>
# LoadError: no such file to load -- active_support>
# MissingSourceFile: no such file to load -- lib/string>
# MissingSourceFile: no such file to load -- utf8proc_native>
Это даже происходит, когда я генерирую демон (из плагина rails) и пытаюсь запустить его.Кто-нибудь знает, как устранить эту проблему?
Решение
Хорошо, я действительно нашел ответ на эту проблему.Мне нужны два пользовательских файла в config/environment.rb
.Я использовал относительные имена путей, и поскольку демоны выполняются в главном каталоге rails, он не смог найти эти два файла.сделав их абсолютным путем, он устранил проблему.
Другие советы
Я только что потратил 30 минут, пытаясь устранить аналогичную ошибку при попытке заставить работать плагин daemons:
LoadError: no such file to load -- active_support
По какой-то причине он не находил active_support
библиотека, даже несмотря на то, что она была установлена.(Возможно, из-за того, что у меня замерзли рельсы).
В моем случае решением этой проблемы было использование абсолютного пути для active_support в моем
ctl-файл (например lib/daemons/mailer_ctl
).
Мне нужно было изменить строку 5 из:
require 'active_support'
Для
require './vendor/rails/activesupport/lib/active_support.rb'