Когда что-то «демонизируется», оно обычно работает в другом рабочем каталоге, чем вы ожидаете.Это особенно верно для сервисов, которые запускаются при загрузке, например, через systemd или cron .
. Чтобы учесть это, необходимо указатьполный путь к файлам, с которыми вы собираетесь работать.Они называются абсолютными путями , поскольку на них не влияет текущий рабочий каталог./a/b/c
- это абсолютный путь, он начинается с /
, но b/c
является относительным.Если вы находитесь в /a
, это эквивалентно, но оно не будет работать вне этой области.
Если вы знаете расположение этого файла относительно вашего сценария, вы обычно можете сделать это:
Daemons.run(File.expand_path('stateleg.rb', __dir__))
Где __dir__
- каталог, в котором хранится исполняемый в данный момент файл сценария.