Skip to content

Instantly share code, notes, and snippets.

@zachwaugh
Created August 12, 2010 15:19
Show Gist options
  • Save zachwaugh/521133 to your computer and use it in GitHub Desktop.
Save zachwaugh/521133 to your computer and use it in GitHub Desktop.
Loading rails environment in a script
#!/usr/bin/env ruby
# Load Rails
ENV['RAILS_ENV'] = ARGV[0] || 'production'
DIR = File.dirname(__FILE__)
require DIR + '/../config/environment'
# ... do stuff that requires using your rails models
@lloeki
Copy link

lloeki commented Mar 28, 2014

#!/usr/bin/env ruby
require File.expand_path('../config/environment',  __FILE__)

worked for me on Rails 3 (one-shot script located in Rails.root)

@dfwmountainbiker
Copy link

works on Rails 4 for me, but only when i run from the main Rails root. I'm sure it's based on a basic tweak I could make to have it run in a subdir, but i'm lazy today.

@0xqd
Copy link

0xqd commented Sep 20, 2014

In Rails 4 or 3, you can try to copy the config from the file test/test_helper.rb and change the path then everything should work correctly.

@krongk
Copy link

krongk commented Mar 5, 2015

cool~

@taimoor
Copy link

taimoor commented Jun 18, 2015

@lloeki your solution worked for me in rails 3.

@giddie
Copy link

giddie commented Feb 22, 2016

FYI, I think that should be:

#!/usr/bin/env ruby

require File.expand_path('../config/environment', File.dirname(__FILE__))
# or
require "#{File.dirname(__FILE__)}/../config/environment"

Otherwise, the script will not work in the script subdirectory.

@localhostdotdev
Copy link

👍 require File.expand_path('../config/environment', File.dirname(__FILE__)) works (Rails 5.2)

@localhostdotdev
Copy link

even better: require_relative '../config/environment'

@nirname
Copy link

nirname commented Apr 1, 2020

my 2 cents

rails r hello.rb

executes hello.rb as if it is a part of rails app

@Eruanne2
Copy link

@giddie require File.expand_path('../config/environment', File.dirname(__FILE__)) worked for me too, thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment