match rails console environment support, to server
rails server takes `-e` as an argument to specify RAILS_ENV, rails console currently does not have the same interface. This commit fixes this disparity so developers can manually specify `RAILS_ENV` or can pass in an environment with a `-e`.
This commit is contained in:
parent
0a555dd421
commit
7529283732
|
@ -24,6 +24,9 @@ module Rails
|
||||||
OptionParser.new do |opt|
|
OptionParser.new do |opt|
|
||||||
opt.banner = "Usage: console [environment] [options]"
|
opt.banner = "Usage: console [environment] [options]"
|
||||||
opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
|
opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
|
||||||
|
opt.on("-e", "--environment=name", String,
|
||||||
|
"Specifies the environment to run this console under (test/development/production).",
|
||||||
|
"Default: development") { |v| options[:environment] = v.strip }
|
||||||
opt.on("--debugger", 'Enable ruby-debugging for the console.') { |v| options[:debugger] = v }
|
opt.on("--debugger", 'Enable ruby-debugging for the console.') { |v| options[:debugger] = v }
|
||||||
opt.parse!(arguments)
|
opt.parse!(arguments)
|
||||||
end
|
end
|
||||||
|
@ -36,6 +39,14 @@ module Rails
|
||||||
options[:sandbox]
|
options[:sandbox]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def environment?
|
||||||
|
options[:environment]
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_environment!
|
||||||
|
Rails.env = options[:environment]
|
||||||
|
end
|
||||||
|
|
||||||
def debugger?
|
def debugger?
|
||||||
options[:debugger]
|
options[:debugger]
|
||||||
end
|
end
|
||||||
|
@ -45,6 +56,8 @@ module Rails
|
||||||
|
|
||||||
require_debugger if debugger?
|
require_debugger if debugger?
|
||||||
|
|
||||||
|
set_environment! if environment?
|
||||||
|
|
||||||
if sandbox?
|
if sandbox?
|
||||||
puts "Loading #{Rails.env} environment in sandbox (Rails #{Rails.version})"
|
puts "Loading #{Rails.env} environment in sandbox (Rails #{Rails.version})"
|
||||||
puts "Any modifications you make will be rolled back on exit"
|
puts "Any modifications you make will be rolled back on exit"
|
||||||
|
|
|
@ -55,6 +55,25 @@ class Rails::ConsoleTest < ActiveSupport::TestCase
|
||||||
assert_match /Loading \w+ environment in sandbox \(Rails/, output
|
assert_match /Loading \w+ environment in sandbox \(Rails/, output
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_console_with_environment
|
||||||
|
app.expects(:sandbox=).with(nil)
|
||||||
|
FakeConsole.expects(:start)
|
||||||
|
|
||||||
|
start ["-e production"]
|
||||||
|
|
||||||
|
assert_match /production/, output
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_console_with_rails_environment
|
||||||
|
app.expects(:sandbox=).with(nil)
|
||||||
|
FakeConsole.expects(:start)
|
||||||
|
|
||||||
|
start ["RAILS_ENV=production"]
|
||||||
|
|
||||||
|
assert_match /production/, output
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def test_console_defaults_to_IRB
|
def test_console_defaults_to_IRB
|
||||||
config = mock("config", :console => nil)
|
config = mock("config", :console => nil)
|
||||||
app = mock("app", :config => config)
|
app = mock("app", :config => config)
|
||||||
|
|
Loading…
Reference in New Issue