From d08cbeb5bca04e4dfabe9328a70aa67e3b8b2b9c Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Wed, 15 Nov 2017 15:05:21 -0800 Subject: [PATCH] Update "ruby-gems" test to check the required "ruby_version" of each gem and auto-skip gems we can't satisfy the latest release of on our current RUBY_VERSION --- test/tests/ruby-gems/container.sh | 60 ++++++++++++++++--------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/test/tests/ruby-gems/container.sh b/test/tests/ruby-gems/container.sh index d22e65150e833..09f38c0c75739 100644 --- a/test/tests/ruby-gems/container.sh +++ b/test/tests/ruby-gems/container.sh @@ -1,35 +1,39 @@ #!/bin/sh set -e -# ruby 2.2.2+: rack activesupport -# ruby 2.0+: mime-types -# (jruby 1.7 is ruby 1.9) -extras="$(ruby -e ' - rubyVersion = Gem::Version.new(RUBY_VERSION) - puts ( - ( - rubyVersion >= Gem::Version.new("2.2.2") ? [ - "rack", - "activesupport", - ] : [] - ) + ( - rubyVersion >= Gem::Version.new("2.0") ? [ - "mime-types", - ] : [] - ) - ).join(" ") +gems="$(ruby -e ' + # list taken from https://rubygems.org/stats + gems = %w{ + bundler + multi_json + rake + rack + json + mime-types + activesupport + thor + i18n + diff-lcs + } + # last updated 2017-11-15 + + require "json" + require "open-uri" + + for gem in gems + # ruby 2.2.2+: rack activesupport + # ruby 2.0+: mime-types + # (jruby 1.7 is ruby 1.9) + gemRubyVersion = JSON.load(open("https://rubygems.org/api/v1/versions/#{ gem }.json"))[0]["ruby_version"] + if Gem::Dependency.new("", gemRubyVersion).match?("", RUBY_VERSION) + puts gem + else + STDERR.puts "skipping #{ gem } due to required Ruby version: #{ gemRubyVersion } (vs #{ RUBY_VERSION })" + end + end ')" -# list taken from https://rubygems.org/stats -for gem in \ - $extras \ - rake \ - multi_json \ - bundler \ - json \ - thor \ - i18n \ - builder \ -; do +for gem in $gems; do + echo "$ gem install $gem" gem install "$gem" done