Friday, March 4, 2011

RoR environment in Ruby standalone script

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?

From stackoverflow
  • 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.

    Vijay Dev : +1. Very Neat...
  • Check out this thread: http://stackoverflow.com/questions/293302/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!

  • 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.

0 comments:

Post a Comment