diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2020-03-04 13:38:58 +0100 |
---|---|---|
committer | David RodrÃguez <deivid.rodriguez@riseup.net> | 2020-03-04 19:12:22 +0100 |
commit | 23dc5cbea0aaa8f4a6e3c9ce3e818e38d8b31e8f (patch) | |
tree | 7e04be254a3eabb7e34a65f5b9bf41a82d6ff1a4 | |
parent | c0fe575cce11c93ab81fecb24e4d270cb17ba02d (diff) | |
download | bundler-skip_old_rubygems_issue.tar.gz |
Install dev dependencies programmaticallyskip_old_rubygems_issue
Without shelling out. It should be faster, and it avoids a ruby 2.3
issue where gems installed through a subprocess are not picked up by the
currently running rubygems.
I'm also removing some unneeded `travis_retry` from the TravisCI
configure. These steps shouldn't timeout and if they do, we should
figure out why. Also, they could be hiding other issues not related to
the network. In this case, `travis_retry bin/rake spec:parallel_deps`
was hiding the issue installing dev dependencies being fixed by this
commit.
-rw-r--r-- | .travis.yml | 6 | ||||
-rw-r--r-- | spec/support/rubygems_ext.rb | 12 |
2 files changed, 11 insertions, 7 deletions
diff --git a/.travis.yml b/.travis.yml index 1100b8981f..b8d711c6f3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,11 +7,11 @@ script: - BUNDLER_SPEC_PRE_RECORDED=1 bin/rake spec:realworld before_script: - - travis_retry bin/rake override_version - - travis_retry bin/rake spec:parallel_deps + - bin/rake override_version + - bin/rake spec:parallel_deps - if [ "$BUNDLER_SPEC_SUB_VERSION" = "" ]; then - travis_retry sudo apt-get install graphviz -y; + sudo apt-get install graphviz -y; fi - if [ "$TRAVIS_RUBY_VERSION" = "2.3.8" ]; then diff --git a/spec/support/rubygems_ext.rb b/spec/support/rubygems_ext.rb index 5299a7b447..3c8d97b83c 100644 --- a/spec/support/rubygems_ext.rb +++ b/spec/support/rubygems_ext.rb @@ -105,10 +105,14 @@ module Spec end def install_gems(gems) - deps = gems.map {|name, req| "'#{name}:#{req}'" }.join(" ") - gem = ENV["GEM_COMMAND"] || "#{Gem.ruby} -S gem --backtrace" - cmd = "#{gem} install #{deps} --no-document --conservative" - system(cmd) || raise("Installing gems #{deps} for the tests to use failed!") + require "rubygems/dependency_installer" + + gems.each do |name, req| + dependency = Gem::Dependency.new(name, req) + next unless dependency.matching_specs.empty? + + Gem::DependencyInstaller.new(:document => false).install(dependency) + end end end end |