¿Cómo ejecutar automáticamente un script Ruby en Ubuntu?

¿Cómo ejecutar automáticamente un script Ruby en Ubuntu?

¿Qué tan difícil puede ser ejecutar un script Ruby al inicio?

Bastante difícil aparentemente:

Estoy usando rvmy ejecutando Ruby 2.3.0.

which rubydevuelve /home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby La ubicación del script es: /home/redline/sinatra-aggregator/server.rb. He probado todo tipo de chowns y chmods, tal vez eso tenga algo que ver con eso.

Se inicia el servidor. ¿Cómo hago para que se ejecute sudo ruby server.rb? Ni siquiera necesito el sudo.

Hay alrededor de diez millones de tutoriales sobre cómo hacerlo usando upstart, rc.local o init.d y no sé qué estoy haciendo porque ninguno funcionó. Incluso probé crontab.

Actualmente, mi crontab -easpecto es el siguiente:

@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

Por cierto, log.txt siempre está vacío.

Probé configuraciones similares con rc.localyinit.d

Editar:

Intenté ejecutar el software con nohup, funcionó bien, pero aquí está el resultado del registro:

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

Te apuesto cualquier cosa a que RVM no proporciona RUTA de alguna manera a las gemas que necesito, ya que no solo existen en el sistema sino que también están instaladas en paquete. ¿Debo usarlo bundle execen mi @rebootdirectiva y, de no ser así, cómo agrego $PATH antes de la ejecución del script?

EDITAR:

Probé la solución de Michael, no funcionó por varias razones explicadas en los comentarios.

Respuesta1

¿Has probado esto?

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

y podría funcionar bien de esta manera.

información relacionada