Como executar automaticamente um script Ruby no Ubuntu?

Como executar automaticamente um script Ruby no Ubuntu?

Quão difícil pode ser executar um script Ruby na inicialização?!

Aparentemente bastante difícil:

Estou usando rvme executando Ruby 2.3.0.

which rubyretorna /home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby A localização do script é: /home/redline/sinatra-aggregator/server.rb. Eu tentei todos os tipos de chowncoisas chmodsobre isso, talvez isso tenha algo a ver com isso.

O servidor é iniciado. Como faço para que ele funcione sudo ruby server.rb? Nem precisa do sudo.

Existem cerca de dez milhões de tutoriais sobre como fazer isso usando upstart, rc.local ou init.d e não sei o que estou fazendo porque nenhum deles funcionou. Eu até tentei o crontab.

Atualmente, minha crontab -eaparência está assim:

@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

A propósito, log.txt está sempre vazio.

Eu tentei configurações semelhantes com rc.localeinit.d

Editar:

Tentei executar o software com nohup, funcionou bem, mas aqui está a saída do log:

== 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$ 

Aposto qualquer coisa que o RVM não fornece PATH de alguma forma para as joias que eu preciso, pois elas não apenas existem no sistema, mas também são instaladas em pacote. Devo usar bundle execna minha @rebootdiretiva e se não, como adiciono $PATH antes da execução do script?

EDITAR:

Tentei a solução de Michael, não funcionou por vários motivos explicados nos comentários.

Responder1

Você já tentou isso:

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

e pode funcionar bem dessa maneira.

informação relacionada