Class: Toys::Utils::Gems
- Inherits:
-
Object
- Object
- Toys::Utils::Gems
- Defined in:
- lib/toys/utils/gems.rb
Overview
A helper module that activates and installs gems
Defined Under Namespace
Classes: ActivationFailedError, GemfileUpdateNeededError, InstallFailedError
Class Method Summary collapse
-
.activate(name, *requirements) ⇒ Object
Activate the given gem.
Instance Method Summary collapse
-
#activate(name, *requirements) ⇒ Object
Activate the given gem.
-
#initialize(input: $stdin, output: $stderr, suppress_confirm: false, default_confirm: true) ⇒ Gems
constructor
Create a new gem activator.
Constructor Details
#initialize(input: $stdin, output: $stderr, suppress_confirm: false, default_confirm: true) ⇒ Gems
Create a new gem activator.
82 83 84 85 86 87 88 89 90 |
# File 'lib/toys/utils/gems.rb', line 82 def initialize(input: $stdin, output: $stderr, suppress_confirm: false, default_confirm: true) @terminal = Terminal.new(input: input, output: output) @exec = Exec.new @suppress_confirm = suppress_confirm ? true : false @default_confirm = default_confirm ? true : false end |
Class Method Details
.activate(name, *requirements) ⇒ Object
Activate the given gem. If it is not present, attempt to install it (or inform the user to update the bundle).
67 68 69 |
# File 'lib/toys/utils/gems.rb', line 67 def self.activate(name, *requirements) new.activate(name, *requirements) end |
Instance Method Details
#activate(name, *requirements) ⇒ Object
Activate the given gem. If it is not present, attempt to install it (or inform the user to update the bundle).
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/toys/utils/gems.rb', line 99 def activate(name, *requirements) gem(name, *requirements) rescue ::Gem::LoadError => e1 is_missing_spec = if defined?(::Gem::MissingSpecError) e1.is_a?(::Gem::MissingSpecError) else e1..include?("Could not find") end if is_missing_spec install_gem(name, requirements) begin gem(name, *requirements) rescue ::Gem::LoadError => e2 report_error(name, requirements, e2) end else report_error(name, requirements, e1) end end |