Como executar um script ruby no Ubuntu?

3

O quão difícil pode ser executar um script ruby na inicialização?!

Bastante resistente aparentemente:

Estou usando rvm e executando ruby 2.3.0 .

which ruby retorna /home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby O local do script é: /home/redline/sinatra-aggregator/server.rb . Eu tentei todos os tipos de chown s e chmod s, talvez isso tenha algo a ver com isso.

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

Há 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 nem um único deles funcionou. Eu até tentei crontab.

Atualmente, meu crontab -e é 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

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

Eu tentei configurações semelhantes com rc.local e init.d

Editar:

Eu 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 está fornecendo o PATH de alguma forma para as gemas que eu preciso, pois elas não existem apenas no sistema, mas são instaladas pelo pacote. Devo usar bundle exec na minha diretiva @reboot e, se não, como adicionar $ PATH antes da execução do script?

EDITAR:

Tentei a solução de Michael, não funcionou por várias razões explicadas nos comentários.

    
por dsp_099 13.02.2016 / 12:20

1 resposta

-1

Você já tentou isso:

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

e pode funcionar bem assim.

    
por Michael 16.02.2016 / 17:10