summaryrefslogtreecommitdiff
path: root/lib/bundler/definition.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bundler/definition.rb')
-rw-r--r--lib/bundler/definition.rb31
1 files changed, 19 insertions, 12 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index b3bb0dc1ae..43547f8be6 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -742,19 +742,10 @@ module Bundler
# the metadata dependencies here
def expanded_dependencies
@expanded_dependencies ||= begin
- ruby_versions = []
- add_ruby_versions = proc do |ruby_version|
- break unless ruby_version
- if ruby_version.patchlevel
- ruby_versions << ruby_version.to_gem_version_with_patchlevel
- else
- ruby_versions += ruby_version.versions.map {|v| "~> #{v}.0" }
- end
- end
- add_ruby_versions.call(@ruby_version)
+ ruby_versions = concat_ruby_version_requirements(@ruby_version)
if ruby_versions.empty? || !@ruby_version.exact?
- add_ruby_versions.call(RubyVersion.system)
- add_ruby_versions.call(locked_ruby_version_object) unless @unlock[:ruby]
+ concat_ruby_version_requirements(RubyVersion.system)
+ concat_ruby_version_requirements(locked_ruby_version_object) unless @unlock[:ruby]
end
metadata_dependencies = [
@@ -765,6 +756,22 @@ module Bundler
end
end
+ def concat_ruby_version_requirements(ruby_version, ruby_versions = [])
+ return ruby_versions unless ruby_version
+ if ruby_version.patchlevel
+ ruby_versions << ruby_version.to_gem_version_with_patchlevel
+ else
+ ruby_versions.concat(ruby_version.versions.map do |version|
+ requirement = Gem::Requirement.new(version)
+ if requirement.exact?
+ "~> #{version}.0"
+ else
+ requirement
+ end
+ end)
+ end
+ end
+
def expand_dependencies(dependencies, remote = false)
deps = []
dependencies.each do |dep|