Crontab + Ruby on Rails: / usr / bin / env: ruby: Nenhum arquivo ou diretório

3

Eu tenho um aplicativo ruby on rails e preciso agendar um crontab para uma tarefa de rake.

*/5 * * * * RAILS_ENV=production /usr/local/bin/rake -f /usr/local/www/mysite-web-production/current/Rakefile my_site:export_products >> /var/log/export_feed.log 3>&1

No entanto, ele não está funcionando (funciona quando eu o faço manualmente, mas não como um crontab) e está me mostrando /usr/bin/env: ruby: No such file or directory . Eu não estou usando o RVM. Estou usando o ruby 1.9.3 e rails 3 no Linux.

    
por Edmund 18.10.2013 / 21:31

1 resposta

2

Onde quer que esteja ruby, não está no $PATH de cron . Encontre a localização real de ruby executando type -a . Em seguida, adicione seu caminho à variável de ambiente $PATH em seu crontab.

Exemplo, se você encontrar type -a mostra que o caminho para ruby é /usr/local/bin/ruby (e a julgar pelo seu caminho para rake é provável), seu crontab deve ter esta aparência:

PATH=$PATH:/usr/local/bin
*/5 * * * * RAILS_ENV=production /usr/local/bin/rake -f /usr/local/www/mysite-web-production/current/Rakefile my_site:export_products >> /var/log/export_feed.log 3>&1

Ou possivelmente:

*/5 * * * * RAILS_ENV=production PATH=$PATH:/usr/local/bin /usr/local/bin/rake -f /usr/local/www/mysite-web-production/current/Rakefile my_site:export_products >> /var/log/export_feed.log 3>&1

Ou deveria funcionar.

    
por 18.10.2013 / 21:38

Tags