6

I want to run a standalone ruby script in which I need my RoR environment to be used. Specifically, I need my models extending ActionMailer and ActiveRecord. I also need to read the database configuration from my database.yml. How do I go about it?

John Topley
  • 113,588
  • 46
  • 195
  • 237
Sanjay
  • 839
  • 3
  • 10
  • 14

3 Answers3

9

The easiest way is to change the shebang of your script from :

#!/usr/bin/ruby

to

#!/path/to/your/rails/script/runner

Et voilĂ , your script will be run with the full rails environment loaded. You can also run your script as ./my_script -e production to have it run with the production database.

mat
  • 12,943
  • 5
  • 39
  • 44
0

Check out this thread: How do I run Ruby tasks that use my Rails models?

Essentially it boils down to:

require "#{ENV['RAILS_ROOT']}/config/environment.rb"

Have fun!

Community
  • 1
  • 1
salt.racer
  • 21,903
  • 14
  • 44
  • 51
0

I think the best way to do this is to make it a rake task.

   # lib/tasks/mystuff.rake
   desc 'do my stuff'
   task :my_stuff => [:environment] do
     # do my stuff
   end

The [:environment] stanza loads the rails environment.

Scott
  • 7,034
  • 4
  • 24
  • 26