From: Florian Gilcher Date: 2012-06-03T05:03:13+09:00 Subject: Re: rvm - how to run a ruby script via crontab? --Apple-Mail-5--417065267 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On Jun 2, 2012, at 9:35 PM, Arun Tomar wrote: > On 06/03/2012 12:57 AM, Wybo Dekker wrote: >>=20 >> I have, for the first time, installed ruby using rvm. >> I run my backups via crontab, calling a bash script that runs a ruby >> script. However, that script now tell me that it doesn't know about = ruby. >> So I entered two lines in the bash script: >>=20 >> RVM=3D/usr/local/rvm/scripts/rvm >> test -e $RVM && source $RVM >>=20 >> and it runs OK; but it seems to me that this is not the way it should = be >> done. Is it? >>=20 >=20 > Cron runs as sh shell. it doesn't read bashrc or profile.d files like = rvm.sh. so it will not know where to find ruby that's installed in rvm.=20= >=20 > for one of our project this is how we've been running things: >=20 > Note : We recommend to add cron job for checking the available network = connections. Add following into the crontab :=20 > */5 * * * * bash -c 'source /etc/profile.d/rvm.sh && /usr/bin/env = ruby /usr/local/rvm/gems/ruby-1.9.3-p125/bin/ispunity monitor' >=20 > also have a look at this >=20 > https://rvm.io/integration/cron/ Newer RVMs also have a script called `rvm_shell`. $RVM_INSTALL_LOCATION/bin/rvm_shell 1.9.3 -c 'ispunity monitor' (or similar) should work. If you have a system level RVM, it should be rather easy. Regards, Florian= --Apple-Mail-5--417065267 Content-Transfer-Encoding: 7bit Content-Type: text/html; charset=us-ascii
On Jun 2, 2012, at 9:35 PM, Arun Tomar wrote:

On 06/03/2012 12:57 AM, Wybo Dekker wrote:
I have, for the first time, installed ruby using rvm.
I run my backups via crontab, calling a bash script that runs a ruby
script. However, that script now tell me that it doesn't know about ruby.
So I entered two lines in the bash script:

  RVM=/usr/local/rvm/scripts/rvm
  test -e $RVM && source $RVM

and it runs OK; but it seems to me that this is not the way it should be
done. Is it?


Cron runs as sh shell. it doesn't read bashrc or profile.d files like rvm.sh. so it will not know where to find ruby that's installed in rvm.

for one of our project this is how we've been running things:

Note : We recommend to add cron job for checking the available network connections. Add following into the crontab : 
    */5 * * * * bash -c 'source /etc/profile.d/rvm.sh && /usr/bin/env ruby /usr/local/rvm/gems/ruby-1.9.3-p125/bin/ispunity monitor'

also have a look at this

https://rvm.io/integration/cron/

Newer RVMs also have a script called `rvm_shell`.

  $RVM_INSTALL_LOCATION/bin/rvm_shell 1.9.3 -c 'ispunity monitor'

(or similar) should work.

If you have a system level RVM, it should be rather easy.

Regards,
Florian
--Apple-Mail-5--417065267--