Warn on EOL Ruby Versions (#159)

This commit is contained in:
Graham Paye 2018-08-20 15:52:23 -07:00 committed by GitHub
parent b03268d33f
commit b5d73a84a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 85 additions and 1 deletions

View File

@ -1,6 +1,7 @@
## 0.6.5 (2018/08/16) ## 0.6.5 (2018/08/16)
* Fix incorrect http verb when revoking credentials. * Fix incorrect http verb when revoking credentials.
* Warn on EOL ruby versions.
## 0.6.4 (2018/08/03) ## 0.6.4 (2018/08/03)

View File

@ -162,6 +162,17 @@ access and refresh tokens. Two storage implementations are included:
Custom storage implementations can also be used. See Custom storage implementations can also be used. See
[token_store.rb](lib/googleauth/token_store.rb) for additional details. [token_store.rb](lib/googleauth/token_store.rb) for additional details.
## Supported Ruby Versions
This library is currently supported on Ruby 1.9+.
However, Ruby 2.4 or later is strongly recommended, as earlier releases have
reached or are nearing end-of-life. After March 31, 2019, Google will provide
official support only for Ruby versions that are considered current and
supported by Ruby Core (that is, Ruby versions that are either in normal
maintenance or in security maintenance).
See https://www.ruby-lang.org/en/downloads/branches/ for further details.
## License ## License
This library is licensed under Apache 2.0. Full license text is This library is licensed under Apache 2.0. Full license text is

View File

@ -33,3 +33,75 @@ require 'googleauth/credentials'
require 'googleauth/default_credentials' require 'googleauth/default_credentials'
require 'googleauth/user_authorizer' require 'googleauth/user_authorizer'
require 'googleauth/web_user_authorizer' require 'googleauth/web_user_authorizer'
module Google
# Module Auth provides classes that provide Google-specific authorization
# used to access Google APIs.
module Auth
# rubocop:disable MethodDefParentheses
# On March 31, 2019, set supported version to 2.4 and recommended to 2.6.
# Thereafter, follow the MRI support schedule: supported means non-EOL,
# and recommended means in normal (rather than security) maintenance.
# See https://www.ruby-lang.org/en/downloads/branches/
##
# Minimum "supported" Ruby version (non-EOL)
# @private
#
SUPPORTED_VERSION_THRESHOLD = '1.9'.freeze
##
# Minimum "recommended" Ruby version (normal maintenance)
# @private
#
RECOMMENDED_VERSION_THRESHOLD = '2.4'.freeze
##
# Check Ruby version and emit a warning if it is old
# @private
#
def self.warn_on_old_ruby_version
return if ENV['GOOGLE_CLOUD_SUPPRESS_RUBY_WARNINGS']
cur_version = Gem::Version.new RUBY_VERSION
if cur_version < Gem::Version.new(SUPPORTED_VERSION_THRESHOLD)
warn_unsupported_ruby cur_version, RECOMMENDED_VERSION_THRESHOLD
elsif cur_version < Gem::Version.new(RECOMMENDED_VERSION_THRESHOLD)
warn_nonrecommended_ruby cur_version, RECOMMENDED_VERSION_THRESHOLD
end
rescue ArgumentError
warn 'Unable to determine current Ruby version.'
end
##
# Print a warning for an EOL version of Ruby
# @private
#
def self.warn_unsupported_ruby cur_version, recommended_version
warn "WARNING: You are running Ruby #{cur_version}, which has reached" \
' end-of-life and is no longer supported by Ruby Core.'
warn 'The Google Cloud API clients work best on supported versions of' \
' Ruby. It is strongly recommended that you upgrade to Ruby' \
" #{recommended_version} or later."
warn 'See https://www.ruby-lang.org/en/downloads/branches/ for more' \
' info on the Ruby maintenance schedule.'
warn 'To suppress this message, set the' \
' GOOGLE_CLOUD_SUPPRESS_RUBY_WARNINGS environment variable.'
end
##
# Print a warning for a supported but nearing EOL version of Ruby
# @private
#
def self.warn_nonrecommended_ruby cur_version, recommended_version
warn "WARNING: You are running Ruby #{cur_version}, which is nearing" \
' end-of-life.'
warn 'The Google Cloud API clients work best on supported versions of' \
" Ruby. Consider upgrading to Ruby #{recommended_version} or later."
warn 'See https://www.ruby-lang.org/en/downloads/branches/ for more' \
' info on the Ruby maintenance schedule.'
warn 'To suppress this message, set the' \
' GOOGLE_CLOUD_SUPPRESS_RUBY_WARNINGS environment variable.'
end
# rubocop:enable MethodDefParentheses
end
end
Google::Auth.warn_on_old_ruby_version

View File

@ -31,6 +31,6 @@ module Google
# Module Auth provides classes that provide Google-specific authorization # Module Auth provides classes that provide Google-specific authorization
# used to access Google APIs. # used to access Google APIs.
module Auth module Auth
VERSION = '0.6.4'.freeze VERSION = '0.6.5'.freeze
end end
end end