summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2016-06-08 12:16:07 -0500
committerSamuel Giddins <segiddins@segiddins.me>2016-06-08 12:16:44 -0500
commit9dbe160f9821d1c27a7dc1cd9532e754cb74e96d (patch)
tree193c2ca6910d4f32e72260b9e3f4f2890a944911
parent515c4cb90866c26ac702e8e745709e1dc7d8efc1 (diff)
downloadbundler-9dbe160f9821d1c27a7dc1cd9532e754cb74e96d.tar.gz
[Definition] Fail gracefully when the lockfile ruby version is invalid
-rw-r--r--lib/bundler/definition.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index ad58eeef7d..365c101fa9 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -85,7 +85,13 @@ module Bundler
@unlock[:gems] ||= []
@unlock[:sources] ||= []
- @unlock[:ruby] ||= @ruby_version && @locked_ruby_version && @ruby_version.diff(RubyVersion.from_string(@locked_ruby_version))
+ @unlock[:ruby] ||= if @ruby_version && @locked_ruby_version
+ unless locked_ruby_version_object = RubyVersion.from_string(@locked_ruby_version)
+ raise LockfileError, "Failed to create a `RubyVersion` object from " \
+ "`#{@locked_ruby_version}` found in #{lockfile} -- try running `bundle update --ruby`."
+ end
+ @ruby_version.diff(locked_ruby_version_object)
+ end
@unlocking ||= @unlock[:ruby] || (!@locked_ruby_version ^ !@ruby_version)
current_platform = Bundler.rubygems.platforms.map {|p| generic(p) }.compact.last