Skip to content

Commit 5ebe55b

Browse files
committed
Refactoring
1 parent 0cfd5e6 commit 5ebe55b

File tree

2 files changed

+28
-27
lines changed

2 files changed

+28
-27
lines changed

lib/spring/commands/rails.rb

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -35,36 +35,39 @@ def command_name
3535

3636
class RailsRunner < Rails
3737
def call
38-
remove_environment_switches ARGV
38+
ARGV.replace extract_environment(ARGV).first
3939
super
4040
end
4141

42-
def env(tail)
43-
previous_option = nil
44-
tail.reverse.each do |option|
45-
case option
46-
when /--environment=(\w+)/ then return $1
47-
when '-e' then return previous_option
48-
end
49-
previous_option = option
50-
end
51-
nil
42+
def env(args)
43+
extract_environment(args).last
5244
end
5345

5446
def command_name
5547
"runner"
5648
end
5749

58-
def remove_environment_switches switches
59-
if i = switches.index('-e')
60-
if switches.length >= i + 1
61-
switches.slice! i..(i+1)
50+
def extract_environment(args)
51+
environment = nil
52+
53+
args = args.select.with_index { |arg, i|
54+
case arg
55+
when "-e"
56+
false
57+
when /--environment=(\w+)/
58+
environment = $1
59+
false
60+
else
61+
if i > 0 && args[i - 1] == "-e"
62+
environment = arg
63+
false
64+
else
65+
true
66+
end
6267
end
63-
end
68+
}
6469

65-
if i = switches.find_index { |arg| arg =~ /--environment=/ }
66-
switches.slice! i
67-
end
70+
[args, environment]
6871
end
6972
end
7073

test/unit/commands_test.rb

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,16 @@ class CommandsTest < ActiveSupport::TestCase
2727
assert_nil command.env(['puts 1+1'])
2828
end
2929

30-
test 'RailsRunner#remove_environment_switches removes -e <env>' do
30+
test 'RailsRunner#extract_environment removes -e <env>' do
3131
command = Spring::Commands::RailsRunner.new
32-
switches = ['-b', '-a', '-e', 'test', '-r']
33-
command.remove_environment_switches switches
34-
assert_equal ['-b', '-a', '-r'], switches
32+
args = ['-b', '-a', '-e', 'test', '-r']
33+
assert_equal [['-b', '-a', '-r'], 'test'], command.extract_environment(args)
3534
end
3635

37-
test 'RailsRunner#remove_environment_switches removes --environment=<env>' do
36+
test 'RailsRunner#extract_environment removes --environment=<env>' do
3837
command = Spring::Commands::RailsRunner.new
39-
switches = ['-b', '--environment=test', '-a', '-r']
40-
command.remove_environment_switches switches
41-
assert_equal ['-b', '-a', '-r'], switches
38+
args = ['-b', '--environment=test', '-a', '-r']
39+
assert_equal [['-b', '-a', '-r'], 'test'], command.extract_environment(args)
4240
end
4341

4442
test "rake command has configurable environments" do

0 commit comments

Comments
 (0)