Как автоматически запустить скрипт Ruby в Ubuntu?

Как автоматически запустить скрипт Ruby в Ubuntu?

Неужели так сложно запустить скрипт Ruby при запуске?!

Судя по всему, довольно жестко:

Я использую rvmи запускаю Ruby 2.3.0.

which rubyвозвращает /home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby Расположение скрипта: /home/redline/sinatra-aggregator/server.rb. Я пробовал всевозможные chowns и chmods, возможно, это как-то связано.

Сервер запускается. Как мне его запустить sudo ruby server.rb? Даже sudo не нужен.

Есть около десяти миллионов руководств о том, как это сделать с помощью upstart, rc.local или init.d, и я не знаю, что я делаю, потому что ни одно из них не сработало. Я даже пробовал crontab.

На данный момент мой crontab -eвыглядит так:

@reboot /home/ubuntu/start.sh

/home/ubuntu/start.sh:

/home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby /home/ubuntu/sinatra-aggregator/server.rb >> log.txt

Кстати, log.txt всегда пуст.

Я пробовал похожие настройки с rc.localиinit.d

Редактировать:

Я попробовал запустить программу с помощью nohup, все получилось, но вот вывод журнала:

== Sinatra (v1.4.7) has taken the stage on 3000 for production with backup from Thin
== Sinatra has ended his set (crowd applauds)


    Starting //Blueline Scraper!


Thin web server (v1.6.4 codename Gob Bluth)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop
Stopping ...
Stopping ...
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- sinatra (LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from server.rb:2:in `<main>'
ubuntu@ip-172-31-35-95:~/sinatra-aggregator$ 

Я готов поспорить, что это RVM каким-то образом не предоставляет PATH для нужных мне gems, поскольку они не только существуют в системе, но и устанавливаются в пакете. Должен ли я использовать bundle execв своей @rebootдирективе, и если нет, то как мне добавить $PATH перед выполнением скрипта?

РЕДАКТИРОВАТЬ:

Попробовал решение Майкла, но оно не сработало по разным причинам, описанным в комментариях.

решение1

Пробовали ли вы это:

cron /home/redline/sinatra-aggregator/server.rb
cron restart

и это может хорошо работать таким образом.

Связанный контент