|
33 | 33 | require 'googleauth/default_credentials' |
34 | 34 | require 'googleauth/user_authorizer' |
35 | 35 | require 'googleauth/web_user_authorizer' |
| 36 | + |
| 37 | +module Google |
| 38 | + # Module Auth provides classes that provide Google-specific authorization |
| 39 | + # used to access Google APIs. |
| 40 | + module Auth |
| 41 | + # rubocop:disable MethodDefParentheses |
| 42 | + |
| 43 | + # On March 31, 2019, set supported version to 2.4 and recommended to 2.6. |
| 44 | + # Thereafter, follow the MRI support schedule: supported means non-EOL, |
| 45 | + # and recommended means in normal (rather than security) maintenance. |
| 46 | + # See https://www.ruby-lang.org/en/downloads/branches/ |
| 47 | + ## |
| 48 | + # Minimum "supported" Ruby version (non-EOL) |
| 49 | + # @private |
| 50 | + # |
| 51 | + SUPPORTED_VERSION_THRESHOLD = '1.9'.freeze |
| 52 | + ## |
| 53 | + # Minimum "recommended" Ruby version (normal maintenance) |
| 54 | + # @private |
| 55 | + # |
| 56 | + RECOMMENDED_VERSION_THRESHOLD = '2.4'.freeze |
| 57 | + ## |
| 58 | + # Check Ruby version and emit a warning if it is old |
| 59 | + # @private |
| 60 | + # |
| 61 | + def self.warn_on_old_ruby_version |
| 62 | + return if ENV['GOOGLE_CLOUD_SUPPRESS_RUBY_WARNINGS'] |
| 63 | + cur_version = Gem::Version.new RUBY_VERSION |
| 64 | + if cur_version < Gem::Version.new(SUPPORTED_VERSION_THRESHOLD) |
| 65 | + warn_unsupported_ruby cur_version, RECOMMENDED_VERSION_THRESHOLD |
| 66 | + elsif cur_version < Gem::Version.new(RECOMMENDED_VERSION_THRESHOLD) |
| 67 | + warn_nonrecommended_ruby cur_version, RECOMMENDED_VERSION_THRESHOLD |
| 68 | + end |
| 69 | + rescue ArgumentError |
| 70 | + warn 'Unable to determine current Ruby version.' |
| 71 | + end |
| 72 | + |
| 73 | + ## |
| 74 | + # Print a warning for an EOL version of Ruby |
| 75 | + # @private |
| 76 | + # |
| 77 | + def self.warn_unsupported_ruby cur_version, recommended_version |
| 78 | + warn "WARNING: You are running Ruby #{cur_version}, which has reached" \ |
| 79 | + ' end-of-life and is no longer supported by Ruby Core.' |
| 80 | + warn 'The Google Cloud API clients work best on supported versions of' \ |
| 81 | + ' Ruby. It is strongly recommended that you upgrade to Ruby' \ |
| 82 | + " #{recommended_version} or later." |
| 83 | + warn 'See https://www.ruby-lang.org/en/downloads/branches/ for more' \ |
| 84 | + ' info on the Ruby maintenance schedule.' |
| 85 | + warn 'To suppress this message, set the' \ |
| 86 | + ' GOOGLE_CLOUD_SUPPRESS_RUBY_WARNINGS environment variable.' |
| 87 | + end |
| 88 | + |
| 89 | + ## |
| 90 | + # Print a warning for a supported but nearing EOL version of Ruby |
| 91 | + # @private |
| 92 | + # |
| 93 | + def self.warn_nonrecommended_ruby cur_version, recommended_version |
| 94 | + warn "WARNING: You are running Ruby #{cur_version}, which is nearing" \ |
| 95 | + ' end-of-life.' |
| 96 | + warn 'The Google Cloud API clients work best on supported versions of' \ |
| 97 | + " Ruby. Consider upgrading to Ruby #{recommended_version} or later." |
| 98 | + warn 'See https://www.ruby-lang.org/en/downloads/branches/ for more' \ |
| 99 | + ' info on the Ruby maintenance schedule.' |
| 100 | + warn 'To suppress this message, set the' \ |
| 101 | + ' GOOGLE_CLOUD_SUPPRESS_RUBY_WARNINGS environment variable.' |
| 102 | + end |
| 103 | + # rubocop:enable MethodDefParentheses |
| 104 | + end |
| 105 | +end |
| 106 | + |
| 107 | +Google::Auth.warn_on_old_ruby_version |
0 commit comments