Module: Gem::UpdateSuggestion
- Included in:
- Commands::InstallCommand
- Defined in:
- lib/rubygems/update_suggestion.rb
Overview
Mixin methods for Gem::Command to promote available RubyGems update
Constant Summary collapse
- ONE_WEEK =
7 * 24 * 60 * 60
Instance Method Summary collapse
-
#eligible_for_update? ⇒ Boolean
Determines if current environment is eligible for update suggestion.
-
#update_suggestion ⇒ Object
Message to promote available RubyGems update with related gem update command.
Instance Method Details
#eligible_for_update? ⇒ Boolean
Determines if current environment is eligible for update suggestion.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/rubygems/update_suggestion.rb', line 24 def eligible_for_update? # explicit opt-out return false if Gem.configuration[:prevent_update_suggestion] return false if ENV["RUBYGEMS_PREVENT_UPDATE_SUGGESTION"] # focus only on human usage of final RubyGems releases return false unless Gem.ui.tty? return false if Gem.rubygems_version.prerelease? return false if Gem. return false if Gem::CIDetector.ci? # check makes sense only when we can store timestamp of last try # otherwise we will not be able to prevent "annoying" update message # on each command call return unless Gem.configuration.state_file_writable? # load time of last check, ensure the difference is enough to repeat the suggestion check_time = Time.now.to_i last_update_check = Gem.configuration.last_update_check return false if (check_time - last_update_check) < ONE_WEEK # compare current and latest version, this is the part where # latest rubygems spec is fetched from remote (Gem.rubygems_version < Gem.latest_rubygems_version).tap do |eligible| # store the time of last successful check into state file Gem.configuration.last_update_check = check_time return eligible end rescue StandardError # don't block install command on any problem false end |
#update_suggestion ⇒ Object
Message to promote available RubyGems update with related gem update command.
12 13 14 15 16 17 18 19 |
# File 'lib/rubygems/update_suggestion.rb', line 12 def update_suggestion <<-MESSAGE A new release of RubyGems is available: #{Gem.rubygems_version} → #{Gem.latest_rubygems_version}! Run `gem update --system #{Gem.latest_rubygems_version}` to update your installation. MESSAGE end |