Sep. 14th, 2015

techquisitor: (sis)
Данный приём должен работать везде, где есть установленный 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.

Profile

techquisitor: (Default)
techquisitor

June 2024

S M T W T F S
      1
2345678
9101112131415
161718192021 22
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 14th, 2025 10:44 am
Powered by Dreamwidth Studios