aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2016-11-20 16:02:39 +0100
committerKasper Timm Hansen <kaspth@gmail.com>2016-11-20 16:02:39 +0100
commit5aea0952e7cb445e614652e3cd9aba71a836eed0 (patch)
tree531d01b0f6aa2ec860c31f7f71b77200ac21202a /railties
parente6c808e354cdc2a8d9274caa6668fdfc145a255d (diff)
downloadrails-5aea0952e7cb445e614652e3cd9aba71a836eed0.tar.gz
rails-5aea0952e7cb445e614652e3cd9aba71a836eed0.tar.bz2
rails-5aea0952e7cb445e614652e3cd9aba71a836eed0.zip
Pass `rails runner` args onto file again.
When making the new command insfrastructure I had missed that `bin/rails runner some_file.rb some args` would pass the extra args onto the file in `ARGV`. Now fixed by allowing the command to take extra args again, and make sure to remove the file name from `ARGV`.
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/commands/runner/runner_command.rb3
-rw-r--r--railties/test/application/runner_test.rb8
2 files changed, 10 insertions, 1 deletions
diff --git a/railties/lib/rails/commands/runner/runner_command.rb b/railties/lib/rails/commands/runner/runner_command.rb
index 27666c76b7..4989a7837d 100644
--- a/railties/lib/rails/commands/runner/runner_command.rb
+++ b/railties/lib/rails/commands/runner/runner_command.rb
@@ -14,7 +14,7 @@ module Rails
"#{super} [<'Some.ruby(code)'> | <filename.rb>]"
end
- def perform(code_or_file = nil)
+ def perform(code_or_file = nil, *file_argv)
unless code_or_file
help
exit 1
@@ -27,6 +27,7 @@ module Rails
if File.exist?(code_or_file)
$0 = code_or_file
+ ARGV.replace(file_argv)
Kernel.load code_or_file
else
begin
diff --git a/railties/test/application/runner_test.rb b/railties/test/application/runner_test.rb
index 8769703f66..7d058f6ee6 100644
--- a/railties/test/application/runner_test.rb
+++ b/railties/test/application/runner_test.rb
@@ -68,6 +68,14 @@ module ApplicationTests
assert_match "bin/program_name.rb", Dir.chdir(app_path) { `bin/rails runner "bin/program_name.rb"` }
end
+ def test_passes_extra_args_to_file
+ app_file "bin/program_name.rb", <<-SCRIPT
+ p ARGV
+ SCRIPT
+
+ assert_match %w( a b ).to_s, Dir.chdir(app_path) { `bin/rails runner "bin/program_name.rb" a b` }
+ end
+
def test_with_hook
add_to_config <<-RUBY
runner do |app|