[rubygems/rubygems] Add file
option to ruby
method in Gemfile
https://github.com/rubygems/rubygems/commit/fb9354b7bf
This commit is contained in:
parent
30a5b94517
commit
75a4767525
@ -85,6 +85,19 @@ ruby "3\.1\.2"
|
|||||||
.
|
.
|
||||||
.IP "" 0
|
.IP "" 0
|
||||||
.
|
.
|
||||||
|
.P
|
||||||
|
If you wish to derive your Ruby version from a version file (ie \.ruby\-version), you can use the \fBfile\fR option instead\.
|
||||||
|
.
|
||||||
|
.IP "" 4
|
||||||
|
.
|
||||||
|
.nf
|
||||||
|
|
||||||
|
ruby file: "\.ruby\-version"
|
||||||
|
.
|
||||||
|
.fi
|
||||||
|
.
|
||||||
|
.IP "" 0
|
||||||
|
.
|
||||||
.SS "ENGINE"
|
.SS "ENGINE"
|
||||||
Each application \fImay\fR specify a Ruby engine\. If an engine is specified, an engine version \fImust\fR also be specified\.
|
Each application \fImay\fR specify a Ruby engine\. If an engine is specified, an engine version \fImust\fR also be specified\.
|
||||||
.
|
.
|
||||||
|
@ -69,6 +69,11 @@ should be the Ruby version that the engine is compatible with.
|
|||||||
|
|
||||||
ruby "3.1.2"
|
ruby "3.1.2"
|
||||||
|
|
||||||
|
If you wish to derive your Ruby version from a version file (ie .ruby-version),
|
||||||
|
you can use the `file` option instead.
|
||||||
|
|
||||||
|
ruby file: ".ruby-version"
|
||||||
|
|
||||||
### ENGINE
|
### ENGINE
|
||||||
|
|
||||||
Each application _may_ specify a Ruby engine. If an engine is specified, an
|
Each application _may_ specify a Ruby engine. If an engine is specified, an
|
||||||
|
@ -5,9 +5,15 @@ module Bundler
|
|||||||
def ruby(*ruby_version)
|
def ruby(*ruby_version)
|
||||||
options = ruby_version.last.is_a?(Hash) ? ruby_version.pop : {}
|
options = ruby_version.last.is_a?(Hash) ? ruby_version.pop : {}
|
||||||
ruby_version.flatten!
|
ruby_version.flatten!
|
||||||
|
|
||||||
raise GemfileError, "Please define :engine_version" if options[:engine] && options[:engine_version].nil?
|
raise GemfileError, "Please define :engine_version" if options[:engine] && options[:engine_version].nil?
|
||||||
raise GemfileError, "Please define :engine" if options[:engine_version] && options[:engine].nil?
|
raise GemfileError, "Please define :engine" if options[:engine_version] && options[:engine].nil?
|
||||||
|
|
||||||
|
if options[:file]
|
||||||
|
raise GemfileError, "Cannot specify version when using the file option" if ruby_version.any?
|
||||||
|
ruby_version << Bundler.read_file(options[:file]).strip
|
||||||
|
end
|
||||||
|
|
||||||
if options[:engine] == "ruby" && options[:engine_version] &&
|
if options[:engine] == "ruby" && options[:engine_version] &&
|
||||||
ruby_version != Array(options[:engine_version])
|
ruby_version != Array(options[:engine_version])
|
||||||
raise GemfileEvalError, "ruby_version must match the :engine_version for MRI"
|
raise GemfileEvalError, "ruby_version must match the :engine_version for MRI"
|
||||||
|
@ -11,6 +11,7 @@ RSpec.describe Bundler::RubyDsl do
|
|||||||
|
|
||||||
let(:dsl) { MockDSL.new }
|
let(:dsl) { MockDSL.new }
|
||||||
let(:ruby_version) { "2.0.0" }
|
let(:ruby_version) { "2.0.0" }
|
||||||
|
let(:ruby_version_arg) { ruby_version }
|
||||||
let(:version) { "2.0.0" }
|
let(:version) { "2.0.0" }
|
||||||
let(:engine) { "jruby" }
|
let(:engine) { "jruby" }
|
||||||
let(:engine_version) { "9000" }
|
let(:engine_version) { "9000" }
|
||||||
@ -23,7 +24,10 @@ RSpec.describe Bundler::RubyDsl do
|
|||||||
|
|
||||||
let(:invoke) do
|
let(:invoke) do
|
||||||
proc do
|
proc do
|
||||||
args = Array(ruby_version) + [options]
|
args = []
|
||||||
|
args << Array(ruby_version_arg) if ruby_version_arg
|
||||||
|
args << options
|
||||||
|
|
||||||
dsl.ruby(*args)
|
dsl.ruby(*args)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -91,5 +95,26 @@ RSpec.describe Bundler::RubyDsl do
|
|||||||
it_behaves_like "it stores the ruby version"
|
it_behaves_like "it stores the ruby version"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "with a file option" do
|
||||||
|
let(:options) { { :file => "foo" } }
|
||||||
|
let(:version) { "3.2.2" }
|
||||||
|
let(:ruby_version) { "3.2.2" }
|
||||||
|
let(:ruby_version_arg) { nil }
|
||||||
|
let(:engine_version) { version }
|
||||||
|
let(:patchlevel) { nil }
|
||||||
|
let(:engine) { "ruby" }
|
||||||
|
before { allow(Bundler).to receive(:read_file).with("foo").and_return("#{version}\n") }
|
||||||
|
|
||||||
|
it_behaves_like "it stores the ruby version"
|
||||||
|
|
||||||
|
context "and a version" do
|
||||||
|
let(:ruby_version_arg) { "2.0.0" }
|
||||||
|
|
||||||
|
it "raises an error" do
|
||||||
|
expect { subject }.to raise_error(Bundler::GemfileError, "Cannot specify version when using the file option")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user