Skip to content

Commit 2c02993

Browse files
Merge pull request #7251 from rubygems/refactor-ruby-dsl
Make RubyDsl a little easier to read; avoid a Hash sometimes
2 parents c6352bc + 2dca837 commit 2c02993

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

bundler/lib/bundler/ruby_dsl.rb

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,28 @@
33
module Bundler
44
module RubyDsl
55
def ruby(*ruby_version)
6-
options = ruby_version.last.is_a?(Hash) ? ruby_version.pop : {}
6+
options = ruby_version.pop if ruby_version.last.is_a?(Hash)
77
ruby_version.flatten!
88

9-
raise GemfileError, "Please define :engine_version" if options[:engine] && options[:engine_version].nil?
10-
raise GemfileError, "Please define :engine" if options[:engine_version] && options[:engine].nil?
9+
if options
10+
patchlevel = options[:patchlevel]
11+
engine = options[:engine]
12+
engine_version = options[:engine_version]
1113

12-
if options[:file]
13-
raise GemfileError, "Do not pass version argument when using :file option" unless ruby_version.empty?
14-
ruby_version << normalize_ruby_file(options[:file])
15-
end
14+
raise GemfileError, "Please define :engine_version" if engine && engine_version.nil?
15+
raise GemfileError, "Please define :engine" if engine_version && engine.nil?
16+
17+
if options[:file]
18+
raise GemfileError, "Do not pass version argument when using :file option" unless ruby_version.empty?
19+
ruby_version << normalize_ruby_file(options[:file])
20+
end
1621

17-
if options[:engine] == "ruby" && options[:engine_version] &&
18-
ruby_version != Array(options[:engine_version])
19-
raise GemfileEvalError, "ruby_version must match the :engine_version for MRI"
22+
if engine == "ruby" && engine_version && ruby_version != Array(engine_version)
23+
raise GemfileEvalError, "ruby_version must match the :engine_version for MRI"
24+
end
2025
end
21-
@ruby_version = RubyVersion.new(ruby_version, options[:patchlevel], options[:engine], options[:engine_version])
26+
27+
@ruby_version = RubyVersion.new(ruby_version, patchlevel, engine, engine_version)
2228
end
2329

2430
# Support the various file formats found in .ruby-version files.

0 commit comments

Comments
 (0)