aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorCarlhuda <carlhuda@Carlhudas-iMac.local>2009-11-23 16:57:34 -0800
committerCarlhuda <carlhuda@Carlhudas-iMac.local>2009-11-23 17:28:50 -0800
commit53d7acdf4f3d61865fb4c4baa6f23601a93e3630 (patch)
tree3003a344b6d9b2a757c3d6ecf67375474b703eab /railties
parenta080323cb040da5f0a63846260147b7ee730d6a1 (diff)
downloadrails-53d7acdf4f3d61865fb4c4baa6f23601a93e3630.tar.gz
rails-53d7acdf4f3d61865fb4c4baa6f23601a93e3630.tar.bz2
rails-53d7acdf4f3d61865fb4c4baa6f23601a93e3630.zip
Refactor script/console into an object and use IRB.start instead of calling exec.
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/commands/console.rb87
-rwxr-xr-xrailties/lib/rails/generators/rails/app/templates/script/console1
2 files changed, 49 insertions, 39 deletions
diff --git a/railties/lib/rails/commands/console.rb b/railties/lib/rails/commands/console.rb
index b977b7162f..1ed2db8dc9 100644
--- a/railties/lib/rails/commands/console.rb
+++ b/railties/lib/rails/commands/console.rb
@@ -1,45 +1,54 @@
-irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
-
require 'optparse'
+require 'irb'
+require "irb/completion"
-options = { :sandbox => false, :irb => irb }
-OptionParser.new do |opt|
- opt.banner = "Usage: console [environment] [options]"
- opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
- opt.on("--irb=[#{irb}]", 'Invoke a different irb.') { |v| options[:irb] = v }
- opt.on("--debugger", 'Enable ruby-debugging for the console.') { |v| options[:debugger] = v }
- opt.parse!(ARGV)
-end
+module Rails
+ class Console
+ def self.start
+ new.start
+ end
-libs = " -r irb/completion"
-libs << %( -r "#{Rails.root}/config/environment")
-libs << " -r rails/console_app"
-libs << " -r rails/console_sandbox" if options[:sandbox]
-libs << " -r rails/console_with_helpers"
+ def start
+ options = {}
-if options[:debugger]
- begin
- require 'ruby-debug'
- libs << " -r ruby-debug"
- puts "=> Debugger enabled"
- rescue Exception
- puts "You need to install ruby-debug to run the console in debugging mode. With gems, use 'gem install ruby-debug'"
- exit
- end
-end
+ OptionParser.new do |opt|
+ opt.banner = "Usage: console [environment] [options]"
+ opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
+ opt.on("--debugger", 'Enable ruby-debugging for the console.') { |v| options[:debugger] = v }
+ opt.parse!(ARGV)
+ end
+
+ require "#{Rails.root}/config/environment"
+ require "rails/console_app"
+ require "rails/console_sandbox" if options[:sandbox]
+ require "rails/console_with_helpers"
-ENV['RAILS_ENV'] = case ARGV.first
- when "p"; "production"
- when "d"; "development"
- when "t"; "test"
- else
- ARGV.first || ENV['RAILS_ENV'] || 'development'
-end
+ if options[:debugger]
+ begin
+ require 'ruby-debug'
+ puts "=> Debugger enabled"
+ rescue Exception
+ puts "You need to install ruby-debug to run the console in debugging mode. With gems, use 'gem install ruby-debug'"
+ exit
+ end
+ end
-if options[:sandbox]
- puts "Loading #{ENV['RAILS_ENV']} environment in sandbox (Rails #{Rails.version})"
- puts "Any modifications you make will be rolled back on exit"
-else
- puts "Loading #{ENV['RAILS_ENV']} environment (Rails #{Rails.version})"
-end
-exec "#{options[:irb]} #{libs} --simple-prompt"
+ ENV['RAILS_ENV'] =
+ case ARGV.first
+ when "p" then "production"
+ when "d" then "development"
+ when "t" then "test"
+ else
+ ARGV.first || ENV['RAILS_ENV'] || 'development'
+ end
+
+ if options[:sandbox]
+ puts "Loading #{ENV['RAILS_ENV']} environment in sandbox (Rails #{Rails.version})"
+ puts "Any modifications you make will be rolled back on exit"
+ else
+ puts "Loading #{ENV['RAILS_ENV']} environment (Rails #{Rails.version})"
+ end
+ IRB.start
+ end
+ end
+end \ No newline at end of file
diff --git a/railties/lib/rails/generators/rails/app/templates/script/console b/railties/lib/rails/generators/rails/app/templates/script/console
index 20aa799d2f..6043f3792b 100755
--- a/railties/lib/rails/generators/rails/app/templates/script/console
+++ b/railties/lib/rails/generators/rails/app/templates/script/console
@@ -1,2 +1,3 @@
require File.expand_path('../../config/application', __FILE__)
require 'rails/commands/console'
+Rails::Console.start