# Executing a method from command line \[cron\]

**URL:** <https://www.ruby-forum.com/t/executing-a-method-from-command-line-cron/79458>\
**Category:** Rails\
**Created:** [December 15, 2006, 12:02pm UTC](https://www.ruby-forum.com/t/executing-a-method-from-command-line-cron/79458 "2006-12-15T12:02:33Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rajkumar\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/fbc32d/32.png) [@Rajkumar\_S](https://www.ruby-forum.com/u/Rajkumar_S)\
**Post date:** [December 15, 2006, 12:02pm UTC](https://www.ruby-forum.com/t/executing-a-method-from-command-line-cron/79458/1 "2006-12-15T12:02:33Z")

</div>

Hi,

I need to do some database housekeeping periodically. Right now I have  
a method in my model, which I am calling from ./script/console like x  
= Model.update\_all and it works fine.

I need to put this in cron. I know that I should be using  
./script/runner, I have looked a lot for an example script  
encapsulating my method to do this. But could not find any. It would  
be great if some one can post a simple script that I can call from  
cron.

I am also not sure if ./script/runner calls methods in my controller or  
model.

thanks and regards,

raj

---

<div class="post-metadata">

**Author:** ![Rajkumar\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/fbc32d/32.png) [@Rajkumar\_S](https://www.ruby-forum.com/u/Rajkumar_S)\
**Post date:** [December 15, 2006, 3:26pm UTC](https://www.ruby-forum.com/t/executing-a-method-from-command-line-cron/79458/2 "2006-12-15T15:26:52Z")

</div>

script/runner will run model methods like this script/runner -e  
production ‘Emailer.send\_daily\_announcements’

Be aware that script/runner loads the Rails framework every time it  
runs, so it starts slow. I.E. don’t use it for jobs that you run all the  
time.  
For a database monitoring daemon that runs a simple query every 5  
seconds, I use a daemon that starts with ‘./script/runner … &’ and  
runs constantly - the method that I call has an infinite loop. This way  
the environment only loads once.

Jason

---

<div class="post-metadata">

**Author:** ![Rajkumar\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/fbc32d/32.png) [@Rajkumar\_S](https://www.ruby-forum.com/u/Rajkumar_S)\
**Post date:** [December 15, 2006, 3:34pm UTC](https://www.ruby-forum.com/t/executing-a-method-from-command-line-cron/79458/3 "2006-12-15T15:34:59Z")

</div>

It’s really simple - I use to create a new class located in model  
directory, eg :

class Runner  
def self.run\_it  
# do your stuff, activerecord models are available  
end  
end

then in the cron.daily (or whatever) :

#!/bin/sh  
/usr/local/www/my\_ror\_application/script/runner Runner.run\_it

---

<div class="post-metadata">

**Author:** ![Rajkumar\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/fbc32d/32.png) [@Rajkumar\_S](https://www.ruby-forum.com/u/Rajkumar_S)\
**Post date:** [December 15, 2006, 10:23pm UTC](https://www.ruby-forum.com/t/executing-a-method-from-command-line-cron/79458/4 "2006-12-15T22:23:24Z")

</div>

If you are on a Mac the following:

couldn’t get it to work either.

so

check this guys post because I owe him a Heineken

[http://uberhamster.com/2006/9/12/invoking-ruby-on-rails-commands-via-cron-and-script-runner](http://uberhamster.com/2006/9/12/invoking-ruby-on-rails-commands-via-cron-and-script-runner)

Now if someone has the answer why its got to be a full path  
let us know

thanx

---

<div class="post-metadata">

**Author:** ![Rajkumar\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/fbc32d/32.png) [@Rajkumar\_S](https://www.ruby-forum.com/u/Rajkumar_S)\
**Post date:** [December 15, 2006, 11:13pm UTC](https://www.ruby-forum.com/t/executing-a-method-from-command-line-cron/79458/5 "2006-12-15T23:13:04Z")

</div>

Totally clear !

Thanx

---

<div class="post-metadata">

**Author:** ![Rajkumar\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/fbc32d/32.png) [@Rajkumar\_S](https://www.ruby-forum.com/u/Rajkumar_S)\
**Post date:** [December 16, 2006, 7:09am UTC](https://www.ruby-forum.com/t/executing-a-method-from-command-line-cron/79458/6 "2006-12-16T07:09:20Z")

</div>

Thanks every one for the helpful mails! I am now able to run the Model  
method from command line.

raj

---

<div class="post-metadata">

**Author:** ![Rajkumar\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/fbc32d/32.png) [@Rajkumar\_S](https://www.ruby-forum.com/u/Rajkumar_S)\
**Post date:** [December 15, 2006, 10:48pm UTC](https://www.ruby-forum.com/t/executing-a-method-from-command-line-cron/79458/7 "2006-12-15T22:48:26Z")

</div>

Peter wrote:

> Now if someone has the answer why its got to be a full path  
> let us know

For DreamHost, and I expect for you too, the answer is that cron jobs  
are run with no environment (so no PATH). See here:

[http://wiki.dreamhost.com/index.php/Crontab](http://wiki.dreamhost.com/index.php/Crontab)

regards

Justin F.
