Данный приём должен работать везде, где есть установленный systemd в качестве системы инициализации. Хитрость в том, что приложения установленные внутри RVM так просто запустить не выйдет, будет жаловаться на отсутствие в $PATH чего-нибудь, чаще всего ruby_executable_hooks.
Подсказкой послужила официальная документация RVM, описывающая как запустить Ruby-приложение используя стандартный init.d.
Для начала генерируем gemset:
Вместо ruby-2.1.2 указывайте ту версию, которая у вас будет использоваться в приложении, прописанная командой rvm use.
Далее собираем wrapper:
Где application — название вашего запускаемого приложения. Правда есть одна особенность, с которой я пока не разобрался. После генерации wrapper в содержимом /usr/local/rvm/wrappers/ruby-2.1.2@application почему-то нет бинарника bundler, но он есть в /usr/local/rvm/wrappers/default (вероятно, связано с тем, что у нас версия Ruby везде указана системной).
После чего пишем unit-файл для systemd:
Всё, теперь приложение будет доступно как обычный демон и им можно управлять с помощью systemd.
Подсказкой послужила официальная документация RVM, описывающая как запустить Ruby-приложение используя стандартный init.d.
Для начала генерируем gemset:
Вместо ruby-2.1.2 указывайте ту версию, которая у вас будет использоваться в приложении, прописанная командой rvm use.
Далее собираем wrapper:
Где application — название вашего запускаемого приложения. Правда есть одна особенность, с которой я пока не разобрался. После генерации wrapper в содержимом /usr/local/rvm/wrappers/ruby-2.1.2@application почему-то нет бинарника bundler, но он есть в /usr/local/rvm/wrappers/default (вероятно, связано с тем, что у нас версия Ruby везде указана системной).
После чего пишем unit-файл для systemd:
Всё, теперь приложение будет доступно как обычный демон и им можно управлять с помощью systemd.
Комментариев нет:
Отправить комментарий