diff options
author | Emilio Tagua <miloops@gmail.com> | 2009-10-02 10:52:55 -0300 |
---|---|---|
committer | Emilio Tagua <miloops@gmail.com> | 2009-10-02 10:52:55 -0300 |
commit | 29457a21c0d4451f5dbc66f72b8256baa02a55bd (patch) | |
tree | 50aebb7b31b990b805871e816b852151df2833a1 /railties/lib/rails/commands/runner.rb | |
parent | 5f9540e4830ace3459b4018006573bad7fb30b53 (diff) | |
parent | 420004e030e96f2ace6e27fd622c90ee9e986677 (diff) | |
download | rails-29457a21c0d4451f5dbc66f72b8256baa02a55bd.tar.gz rails-29457a21c0d4451f5dbc66f72b8256baa02a55bd.tar.bz2 rails-29457a21c0d4451f5dbc66f72b8256baa02a55bd.zip |
Merge commit 'rails/master'
Diffstat (limited to 'railties/lib/rails/commands/runner.rb')
-rw-r--r-- | railties/lib/rails/commands/runner.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/railties/lib/rails/commands/runner.rb b/railties/lib/rails/commands/runner.rb new file mode 100644 index 0000000000..510128318a --- /dev/null +++ b/railties/lib/rails/commands/runner.rb @@ -0,0 +1,54 @@ +require 'optparse' + +options = { :environment => (ENV['RAILS_ENV'] || "development").dup } +code_or_file = nil + +ARGV.clone.options do |opts| + script_name = File.basename($0) + opts.banner = "Usage: #{$0} [options] ('Some.ruby(code)' or a filename)" + + opts.separator "" + + opts.on("-e", "--environment=name", String, + "Specifies the environment for the runner to operate under (test/development/production).", + "Default: development") { |v| options[:environment] = v } + + opts.separator "" + + opts.on("-h", "--help", + "Show this help message.") { $stderr.puts opts; exit } + + if RUBY_PLATFORM !~ /mswin/ + opts.separator "" + opts.separator "You can also use runner as a shebang line for your scripts like this:" + opts.separator "-------------------------------------------------------------" + opts.separator "#!/usr/bin/env #{File.expand_path($0)}" + opts.separator "" + opts.separator "Product.find(:all).each { |p| p.price *= 2 ; p.save! }" + opts.separator "-------------------------------------------------------------" + end + + opts.order! { |o| code_or_file ||= o } rescue retry +end + +ARGV.delete(code_or_file) + +ENV["RAILS_ENV"] = options[:environment] +RAILS_ENV.replace(options[:environment]) if defined?(RAILS_ENV) + +require RAILS_ROOT + '/config/environment' + +begin + if code_or_file.nil? + $stderr.puts "Run '#{$0} -h' for help." + exit 1 + elsif File.exist?(code_or_file) + eval(File.read(code_or_file), nil, code_or_file) + else + eval(code_or_file) + end +ensure + if defined? Rails + Rails.logger.flush if Rails.logger.respond_to?(:flush) + end +end |