Se você quiser executar algum código Ruby por cron, que é empacotado em um script de shell e usa o bundler, talvez você veja algo como isto:
cannot load such file -- bundler/setup
Isso nunca ocorrerá se estiver sendo executado a partir da linha de comando.
Depois de lutar com isso e de ter conhecimento superficial perigoso sobre cron, encontrei uma solução que funciona muito bem para mim.
Atualização :
Você deve ler qualquer coisa após a seção Atualizar para saber por que o problema mencionado acima ocorre!
As linhas abaixo funcionam muito bem se você não tiver nenhum conjunto de joias específico para usar. Em caso afirmativo, você
deve prosseguir com as variáveis de ambiente GEM HOME e GEM PATH da mesma forma que o fará com PATH.
Uma solução melhor, que não é mencionada na página inicial do RVM em sua seção cron, é a seguinte:
rvm use .... # select the ruby you want to use
rvm cron setup # let RMV do your cron settings
crontab -e # add a new cronjob
– fim da seção de atualização.
O Cron repassa pouquíssimas informações sobre o ambiente aos scripts executados por ele mesmo. Para ver o que foi aprovado, tente adicionar um novo trabalho comcrontab -e</code>.
* * * * * set > ~/tmp/setvals
Espere um pouco e depois dê uma olhada em ~/tmp/setvals</code>
HOME='/home/brewster'
IFS=''
LANG='en_US.UTF-8'
LANGUAGE='en_US:en'
LC_ALL='en_US.UTF-8'
LOGNAME='brewster'
OPTIND='1'
PATH='/usr/bin:/bin'
PPID='23152'
PS1='$ '
PS2='> '
PS4='+ '
PWD='/home/brewster'
SHELL='/bin/sh'
Com essas informações fica bem claro que o script nunca terá acesso ao executável Ruby fornecido pelo rvm.
A solução é adicionar uma configuração de ambiente PATH personalizada ao cronfile – se você quiser que esse comportamento funcione globalmente para todos os seus scripts.
Para obter o rvm Ruby usado, tente
rvm env --path
no seu console e, em seguida, adicione ao topo do seu cronfile (crontab -e</code>):
PATH=/usr/local/rvm/gems/ruby-1.9.3-p392/bin:/usr/local/rvm/gems/ruby 1.9.3p392@global/bin:/usr/local/rvm/rubies/ruby-1.9.3p392/bin:/usr/local/rvm/bin:/home/brewster/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Ou o que você quiser ter em PATH</code>. (I installed bundler</code> in my global</code> gemset.)