# Rails cronjob?

**URL:** <https://www.ruby-forum.com/t/rails-cronjob/96223>\
**Category:** Rails\
**Created:** [June 27, 2006, 2:21pm UTC](https://www.ruby-forum.com/t/rails-cronjob/96223 "2006-06-27T14:21:37Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![DJ\_Tequila](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@DJ\_Tequila](https://www.ruby-forum.com/u/DJ_Tequila)\
**Post date:** [June 27, 2006, 2:21pm UTC](https://www.ruby-forum.com/t/rails-cronjob/96223/1 "2006-06-27T14:21:37Z")

</div>

I want to be able to write a script in Ruby which regularly consumes an  
XML feed from a fixed source, re-formats it, produces a large file for  
web delivery, and updates a database with the contained information.

It’s simple - just running a script from a cron job, and some basic data  
manipulation… But I’d prefer to use the Rails database mapping  
constructs than roll my own.

What steps do I need to take to include ActiveRecord and my database  
models in a Ruby script?

Ben

---

<div class="post-metadata">

**Author:** ![DJ\_Tequila](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@DJ\_Tequila](https://www.ruby-forum.com/u/DJ_Tequila)\
**Post date:** [June 27, 2006, 3:50pm UTC](https://www.ruby-forum.com/t/rails-cronjob/96223/2 "2006-06-27T15:50:42Z")

</div>

One very easy way is write your script as a rake task and put it in  
lib/tasks/application.rake

task :update\_the\_universe =\> :environment do

# Put anything in here

end

Then just add a cronjob that executes ‘RAILS\_ENV=production rake  
update\_the\_universe’.

Alternatively, just create a file that requires config/boot (I think  
that’s right … ). Something like:

#!/usr/bin/ruby1.8  
require ‘config/boot’

# Rest of code here

I’ve used the first solution, but not the second.

-Jonathan.

---

<div class="post-metadata">

**Author:** ![DJ\_Tequila](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@DJ\_Tequila](https://www.ruby-forum.com/u/DJ_Tequila)\
**Post date:** [June 27, 2006, 3:54pm UTC](https://www.ruby-forum.com/t/rails-cronjob/96223/3 "2006-06-27T15:54:04Z")

</div>

I wrote up a brief entry on this on my blog that you may find useful:

[http://atomgiant.com/articles/2006/04/18/batch-processing-with-rails](http://atomgiant.com/articles/2006/04/18/batch-processing-with-rails)

Tom

On 6/27/06, Jonathan V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Alternatively, just create a file that requires config/boot (I think  
> On 6/28/06, DJ Tequila [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > 
> 
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

–  
Tom D.

[http://atomgiant.com](http://atomgiant.com)  
[http://gifthat.com](http://gifthat.com)

---

<div class="post-metadata">

**Author:** ![DJ\_Tequila](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@DJ\_Tequila](https://www.ruby-forum.com/u/DJ_Tequila)\
**Post date:** [June 27, 2006, 7:28pm UTC](https://www.ruby-forum.com/t/rails-cronjob/96223/4 "2006-06-27T19:28:16Z")

</div>

Write a class method on a new class and put it in lib/

lib/maintenance.rb:

class Maintenance  
def self.run  
# Do your rails stuff here, using and relying  
# upon the Rails environment.  
end  
end

then, in your crontab, call this:

/path/to/app/script/runner -e production ‘Maintenance.run’

You may also want to check out the very cool rails\_cron  
plugin:

[www.kylemaxwell.com](http://www.kylemaxwell.com)

He has a temporaryarily down page up right now, but I’m  
guessing he’ll have that fixed right away.

–  
– Tom M.

---

<div class="post-metadata">

**Author:** ![DJ\_Tequila](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@DJ\_Tequila](https://www.ruby-forum.com/u/DJ_Tequila)\
**Post date:** [June 27, 2006, 8:42pm UTC](https://www.ruby-forum.com/t/rails-cronjob/96223/5 "2006-06-27T20:42:30Z")

</div>

On 6/27/06, DJ Tequila [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I want to be able to write a script in Ruby which regularly consumes an  
> XML feed from a fixed source, re-formats it, produces a large file for  
> web delivery, and updates a database with the contained information.
> 
> It’s simple - just running a script from a cron job, and some basic data  
> manipulation… But I’d prefer to use the Rails database mapping  
> constructs than roll my own.
> 
> What steps do I need to take to include ActiveRecord and my database  
> models in a Ruby script?

Checkout [http://svn.kylemaxwell.com/rails\_cron/trunk/README](http://svn.kylemaxwell.com/rails_cron/trunk/README).

Joe

---

<div class="post-metadata">

**Author:** ![DJ\_Tequila](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@DJ\_Tequila](https://www.ruby-forum.com/u/DJ_Tequila)\
**Post date:** [June 27, 2006, 3:54pm UTC](https://www.ruby-forum.com/t/rails-cronjob/96223/6 "2006-06-27T15:54:14Z")

</div>

To include railsy things you can always just require the rails gem.  
But if you already have something on your RoR website that does this  
you can just use script/runner.

[http://wiki.rubyonrails.org/rails/pages/RunnerScript](http://wiki.rubyonrails.org/rails/pages/RunnerScript)  
[http://wiki.rubyonrails.org/rails/pages/HowToRunBackgroundJobsInRails](http://wiki.rubyonrails.org/rails/pages/HowToRunBackgroundJobsInRails)

On 6/27/06, DJ Tequila [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Ben
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

–
