Ruby script outside of rails app


#1

Hello:

I would like to write a ruby script that runs on its own, but still
take advantage of the ActiveRecord configured by the web app. Is there
an easy way to do this?

Thanks in advance!


#2

Hi Phil,

you sure can. For offline tasks, I usually go with a rake task (http://
railscasts.com/episodes/127-rake-in-background) or writing a ruby
script which is executed with ruby script/runner (this makes it
similar to running script/console and typing the code yourself).

However if all you want is ActiveRecord and your db config you can do
this:

require ‘rubygems’
require ‘activerecord’

RAILS_ENV = (ENV[“RAILS_ENV”] || “development”)
RAILS_ROOT = “/location/to/my/rails_app”

If we don’t have a db connection, then parse the yml file, and

extract the db config for the relevant rails_env
unless ActiveRecord::Base.connected?
db_options = YAML::load(File.read(File.join(RAILS_ROOT, “config”,
“database.yml”)))
ActiveRecord::Base.establish_connection(db_options[RAILS_ENV])
end

You will also need to require any models you want explicitly too, if
you go this route.

Cheers,
Jeremy


#3

Awesome, exactly what I needed. Thank you!