提交 e91b4834 编写于 作者: R Rafael França 提交者: GitHub

Merge pull request #30257 from y-yagi/backport_29010

Backport #29010 to 5-1-stable 
* Allow irb options to be passed from `rails console` command.
Fixes #28988.
*Yuji Yaginuma*
## Rails 5.1.3 (August 03, 2017) ##
* No changes.
......
......@@ -73,14 +73,26 @@ class ConsoleCommand < Base # :nodoc:
class_option :environment, aliases: "-e", type: :string,
desc: "Specifies the environment to run this console under (test/development/production)."
def initialize(args = [], local_options = {}, config = {})
console_options = []
# For the same behavior as OptionParser, leave only options after "--" in ARGV.
termination = local_options.find_index("--")
if termination
console_options = local_options[termination + 1..-1]
local_options = local_options[0...termination]
end
ARGV.replace(console_options)
super(args, local_options, config)
end
def perform
extract_environment_option_from_argument
# RAILS_ENV needs to be set before config/application is required.
ENV["RAILS_ENV"] = options[:environment]
ARGV.clear # Clear ARGV so IRB doesn't freak.
require_application_and_environment!
Rails::Console.start(Rails.application, options)
end
......
......@@ -136,9 +136,9 @@ def write_prompt(command, expected_output = nil)
assert_output "> "
end
def spawn_console
def spawn_console(options)
Process.spawn(
"#{app_path}/bin/rails console --sandbox",
"#{app_path}/bin/rails console #{options}",
in: @slave, out: @slave, err: @slave
)
......@@ -146,18 +146,26 @@ def spawn_console
end
def test_sandbox
spawn_console
spawn_console("--sandbox")
write_prompt "Post.count", "=> 0"
write_prompt "Post.create"
write_prompt "Post.count", "=> 1"
@master.puts "quit"
spawn_console
spawn_console("--sandbox")
write_prompt "Post.count", "=> 0"
write_prompt "Post.transaction { Post.create; raise }"
write_prompt "Post.count", "=> 0"
@master.puts "quit"
end
def test_environment_option_and_irb_option
spawn_console("test -- --verbose")
write_prompt "a = 1", "a = 1"
write_prompt "puts Rails.env", "puts Rails.env\r\ntest"
@master.puts "quit"
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册