From e0f90cb5552ba8cd58b560b8cc350f176ee30c7f Mon Sep 17 00:00:00 2001 From: Grey Baker Date: Sat, 23 Jun 2018 07:50:20 -0400 Subject: [PATCH] Add friendlier error message --- rack-protection/rack-protection.gemspec | 20 ++++++++++++---- sinatra-contrib/sinatra-contrib.gemspec | 20 ++++++++++++---- sinatra.gemspec | 31 ++++++++++++++++++------- 3 files changed, 53 insertions(+), 18 deletions(-) diff --git a/rack-protection/rack-protection.gemspec b/rack-protection/rack-protection.gemspec index 4ec2eb4467..817649d44c 100644 --- a/rack-protection/rack-protection.gemspec +++ b/rack-protection/rack-protection.gemspec @@ -17,11 +17,21 @@ Gem::Specification.new do |s| "Gemfile", "rack-protection.gemspec" ] - s.metadata = { - 'source_code_uri' => 'https://github.com/sinatra/sinatra/tree/master/rack-protection' - 'homepage_uri' => 'http://sinatrarb.com/protection/', - 'documentation_uri' => 'https://www.rubydoc.info/gems/rack-protection' - } + + if s.respond_to?(:metadata) + s.metadata = { + 'source_code_uri' => 'https://github.com/sinatra/sinatra/tree/master/rack-protection', + 'homepage_uri' => 'http://sinatrarb.com/protection/', + 'documentation_uri' => 'https://www.rubydoc.info/gems/rack-protection' + } + else + raise <<-EOF +RubyGems 2.0 or newer is required to protect against public gem pushes. You can update your rubygems version by running: + gem install rubygems-update + update_rubygems: + gem update --system +EOF + end # dependencies s.add_dependency "rack" diff --git a/sinatra-contrib/sinatra-contrib.gemspec b/sinatra-contrib/sinatra-contrib.gemspec index 7216438dec..c3f33b6636 100644 --- a/sinatra-contrib/sinatra-contrib.gemspec +++ b/sinatra-contrib/sinatra-contrib.gemspec @@ -18,11 +18,21 @@ Gem::Specification.new do |s| "ideas.md", "sinatra-contrib.gemspec" ] - s.metadata = { - 'source_code_uri' => 'https://github.com/sinatra/sinatra/tree/master/sinatra-contrib' - 'homepage_uri' => 'http://sinatrarb.com/contrib/', - 'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra-contrib' - } + + if s.respond_to?(:metadata) + s.metadata = { + 'source_code_uri' => 'https://github.com/sinatra/sinatra/tree/master/sinatra-contrib', + 'homepage_uri' => 'http://sinatrarb.com/contrib/', + 'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra-contrib' + } + else + raise <<-EOF +RubyGems 2.0 or newer is required to protect against public gem pushes. You can update your rubygems version by running: + gem install rubygems-update + update_rubygems: + gem update --system +EOF + end s.required_ruby_version = '>= 2.2.0' diff --git a/sinatra.gemspec b/sinatra.gemspec index b35664ed4a..bbe03b3a15 100644 --- a/sinatra.gemspec +++ b/sinatra.gemspec @@ -22,14 +22,29 @@ Gem::Specification.new 'sinatra', version do |s| s.test_files = s.files.select { |p| p =~ /^test\/.*_test.rb/ } s.extra_rdoc_files = s.files.select { |p| p =~ /^README/ } << 'LICENSE' s.rdoc_options = %w[--line-numbers --inline-source --title Sinatra --main README.rdoc --encoding=UTF-8] - s.metadata = { - 'source_code_uri' => 'https://github.com/sinatra/sinatra', - 'changelog_uri' => 'https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md', - 'homepage_uri' => 'http://sinatrarb.com/', - 'bug_tracker_uri' => 'https://github.com/sinatra/sinatra/issues', - 'mailing_list_uri' => 'http://groups.google.com/group/sinatrarb', - 'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra' - } + + if s.respond_to?(:metadata) + s.metadata = { + 'source_code_uri' => 'https://github.com/sinatra/sinatra', + 'changelog_uri' => 'https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md', + 'homepage_uri' => 'http://sinatrarb.com/', + 'bug_tracker_uri' => 'https://github.com/sinatra/sinatra/issues', + 'mailing_list_uri' => 'http://groups.google.com/group/sinatrarb', + 'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra' + } + else + msg = "RubyGems 2.0 or newer is required to protect against public "\ + "gem pushes. You can update your rubygems version by running:\n\n"\ + "gem install rubygems-update\n"\ + "update_rubygems\n"\ + "gem update --system" + raise <<-EOF +RubyGems 2.0 or newer is required to protect against public gem pushes. You can update your rubygems version by running: + gem install rubygems-update + update_rubygems: + gem update --system +EOF + end s.required_ruby_version = '>= 2.2.0'