Crontab and ruby script not working

I have a ruby script that I am trying to set up on a cronjob. I have
tested it both just running it in the normal mode and a test shell mode.

When I am logged in as a normal user or in ‘env -i $SHELL --norc’ I will
run ruby /home/salinn/dev/ruby/webmail/script.rb and it works in both
environments. Could someone help point me out what I am doing wrong?

My crontab looks like this:

          • ruby /home/salinn/dev/ruby/webmail/script.rb

Am 04.09.2013 15:41, schrieb Paul D.:

I have a ruby script that I am trying to set up on a cronjob. I have
tested it both just running it in the normal mode and a test shell mode.

When I am logged in as a normal user or in ‘env -i $SHELL --norc’ I will
run ruby /home/salinn/dev/ruby/webmail/script.rb and it works in both
environments. Could someone help point me out what I am doing wrong?

My crontab looks like this:

          • ruby /home/salinn/dev/ruby/webmail/script.rb

To make sure it is not an issue with the PATH environment variable
(cron may have its own?), try invoking Ruby with the full path,
e.g. /usr/bin/ruby (you can find out with ‘which ruby’).

Regards,
Marcus

Have you tried giving the full path to Ruby? /usr/local/bin/ruby or
whatever it is on your machine?

On Wed, 2013-09-04 at 16:13 +0200, [email protected] wrote:

          • ruby /home/salinn/dev/ruby/webmail/script.rb

To make sure it is not an issue with the PATH environment variable
(cron may have its own?), try invoking Ruby with the full path,
e.g. /usr/bin/ruby (you can find out with ‘which ruby’).

Regards,
Marcus

cron uses a very minimal path.
you may need to explicitely set the PATH at the top of your crontab, or
give the full path to any exes that you utilize

On Wed, 2013-09-04 at 18:54 +0200, Paul D. wrote:

I have tried to give it the specific Path to ruby and loadingin the path
from the profile I am using. It is still not working only when I run it
as a cronjob.

This is what the cronjob now looks like:

PATH="$HOME/bin:$PATH"

          • /usr/bin/ruby /home/salinn/dev/ruby/webmail/script.rb

Don’t use $HOME – give the full path name

PATH=/path/to/user/home/bin:$PATH

reid

I have tried to give it the specific Path to ruby and loadingin the path
from the profile I am using. It is still not working only when I run it
as a cronjob.

This is what the cronjob now looks like:

PATH="$HOME/bin:$PATH"

          • /usr/bin/ruby /home/salinn/dev/ruby/webmail/script.rb

Hello,

On 4 Σεπ 2013, at 15:41 , Paul D. [email protected] wrote:


Posted via http://www.ruby-forum.com/.

This was my crontab at a Gentoo system with fcron (a more powerful
solution than cron) but same works for other systems

NOTE: I use ‘rvm’

atmat’s crontab configuration

SHELL=/bin/bash
PATH=/home/atma/.rvm/gems/ruby-1.9.3-p0/bin:/home/atma/.rvm/gems/[email protected]/bin:/home/atma/.rvm/rubies/ruby-1.9.3-p0/bin:/home/atma/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.5.3
RUBYLIB=/home/atma/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1
GEM_HOME=’/home/atma/.rvm/gems/ruby-1.9.3-p0’GEM_PATH=’/home/atma/.rvm/gems/ruby-1.9.3-p0:/home/atma/.rvm/gems/[email protected]
RUBYOPT=rubygems

%nightly,mail(no) * 8-9 /home/atma/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
/usr/local/bin/morula -s username update

You can get the idea.

Panagiotis (atmosx) Atmatzidis

email: [email protected]
URL: http://www.convalesco.org
GnuPG ID: 0x1A7BFEC5
gpg --keyserver pgp.mit.edu --recv-keys 1A7BFEC5

On Wed, 2013-09-04 at 21:00 +0200, Panagiotis A. wrote:

You can get the idea.

05 00 * * * /mnt/nfs/dataproc_work/applhome/cadredd/rubybin/rvm_cronit
ruby /path/to/somerubyscript.rb “param1” “param2” etc
33 06 * * 1-6 /mnt/nfs/dataproc_work/applhome/cadredd/rubybin/rvm_cronit
/path/to/some/shell_script_that_includes_a_call_to_a_ruby_script.sh
“param1” “param2” etc

$ cat /home/${user}/bin/rvm_cronit
#!/bin/bash
###############################################################################

lclcmd=basename $0

if [ “$1” = “-h” ]; then
Description
fi
minargv=1
if [ $# -lt $minargv ]; then
echo “Invalid number of parameters specified.”
Description
fi

###############################################################################

set up some standard variables

###############################################################################

exitsts=0

###############################################################################

validate parameters

###############################################################################

N/A

###############################################################################

run the job

###############################################################################

cd /home/${user}
. /home/${user}/.profile
envfile=/usr/local/rvm/bin/rvm env --path
. $envfile

$*
cmdsts=$?
if [ $cmdsts -ne 0 ]; then
exitsts=1
echo “cronit: ERROR”
echo “quitting $lclcmd”; exit $exitsts
fi

exit $exitsts


If you have received the message in error, please advise the sender by
reply email and please delete the message. This message contains
information which may be confidential or otherwise protected. Unless
you are the addressee (or authorized to receive for the addressee), you
may not use, copy, or disclose to anyone the message or any information
contained in the message.

tamouse m. wrote in post #1120716:

On Sep 4, 2013, at 11:54 AM, Paul D. [email protected] wrote:

Posted via http://www.ruby-forum.com/.
“It isn’t working” isn’t really very descriptive. What errors are you
getting?

The problem is I am not seeing any errors besides that it is not
running. I can see in syslog that it runs it.

On Sep 4, 2013, at 11:54 AM, Paul D. [email protected] wrote:

Posted via http://www.ruby-forum.com/.
“It isn’t working” isn’t really very descriptive. What errors are you
getting?

On Sep 5, 2013, at 7:26 AM, Paul D. [email protected] wrote:

tamouse m. wrote in post #1120716:

On Sep 4, 2013, at 11:54 AM, Paul D. [email protected] wrote:

Posted via http://www.ruby-forum.com/.
“It isn’t working” isn’t really very descriptive. What errors are you
getting?

The problem is I am not seeing any errors besides that it is not
running. I can see in syslog that it runs it.

So you see in syslog that it runs. But you somehow detect that it’s not
running, which I assume means you can’t see the effect from it.

Are you getting an email from cron with any job output at all?

Given your crontab:

PATH="$HOME/bin:$PATH"

          • /usr/bin/ruby /home/salinn/dev/ruby/webmail/script.rb

You should be seeing an email with the combined stdout/stdin from that
job showing up once a minute. If not, change it to something like:

PATH="$HOME/bin:$PATH"

          • /usr/bin/ruby /home/salinn/dev/ruby/webmail/script.rb >>
            $HOME/webmailscript.log 2>&1

to ensure you’re getting the output, if any.

You might add a cron job that is simply:

          • set > $HOME/crontab-env.txt 2>&1

to see the environment your cronjob is actually running in. After that
cronjob runs, the file should appear in your home directory. You can
remove the cronjob after that. Inspect the environment, see if there’s
anything missing you need.