Skip to content

Commit

Permalink
Warn on EOL Ruby Versions (#159)
Browse files Browse the repository at this point in the history
  • Loading branch information
TheRoyalTnetennba committed Aug 20, 2018
1 parent b03268d commit b5d73a8
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
## 0.6.5 (2018/08/16)

* Fix incorrect http verb when revoking credentials.
* Warn on EOL ruby versions.

## 0.6.4 (2018/08/03)

Expand Down
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,17 @@ access and refresh tokens. Two storage implementations are included:
Custom storage implementations can also be used. See
[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

This library is licensed under Apache 2.0. Full license text is
Expand Down
72 changes: 72 additions & 0 deletions lib/googleauth.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,75 @@
require 'googleauth/default_credentials'
require 'googleauth/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
2 changes: 1 addition & 1 deletion lib/googleauth/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@ module Google
# Module Auth provides classes that provide Google-specific authorization
# used to access Google APIs.
module Auth
VERSION = '0.6.4'.freeze
VERSION = '0.6.5'.freeze
end
end

0 comments on commit b5d73a8

Please sign in to comment.