Class: Rails::Generators::Hyperdrive::DiscoverGenerator

Inherits:
Base
  • Object
show all
Includes:
GitignoreSupport
Defined in:
lib/generators/hyperdrive/discover/discover_generator.rb

Overview

Read-only with respect to the app: never edits the Gemfile and never installs gems.

Constant Summary collapse

CACHE_RULE =
::Rails::Hyperdrive::CompanionDiscovery::CACHE_RELATIVE_PATH

Constants included from GitignoreSupport

GitignoreSupport::GITIGNORE

Instance Method Summary collapse

Methods included from GitignoreSupport

#ensure_gitignored

Instance Method Details

#discover_and_reportObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/generators/hyperdrive/discover/discover_generator.rb', line 31

def discover_and_report
  result = ::Rails::Hyperdrive::CompanionDiscovery.new(
    lockfile_path: ::Rails.root.join("Gemfile.lock").to_s,
    cache_path: ::Rails.root.join(CACHE_RULE).to_s,
    refresh: options[:refresh]
  ).run

  if result.status == :unavailable
    say_status :unavailable, "rubygems discovery unavailable — #{result.detail}; no cached results", :yellow
    return
  end

  say_status :stale, "rubygems unreachable; showing #{format_age(result.age_seconds)} cached results — #{result.detail}", :yellow if result.status == :stale

  report_suggestions(result.suggestions)
  report_warnings(result.warnings)
end

#ensure_cache_gitignoredObject



27
28
29
# File 'lib/generators/hyperdrive/discover/discover_generator.rb', line 27

def ensure_cache_gitignored
  ensure_gitignored(CACHE_RULE)
end

#verify_environmentObject

Raises:

  • (Thor::Error)


21
22
23
24
25
# File 'lib/generators/hyperdrive/discover/discover_generator.rb', line 21

def verify_environment
  return if defined?(::Rails) && ::Rails.respond_to?(:root) && ::Rails.root
  say_status :error, "must be run inside a Rails app", :red
  raise Thor::Error, "hyperdrive: not in a Rails app"
end