Class: Toys::Utils::Gems
- Inherits:
-
Object
- Object
- Toys::Utils::Gems
- Defined in:
- lib/toys/utils/gems.rb
Overview
A helper class that activates and installs gems and sets up bundler.
This class is not loaded by default. Before using it directly, you should
require "toys/utils/gems"
Defined Under Namespace
Classes: ActivationFailedError, AlreadyBundledError, BundleNotInstalledError, BundlerFailedError, GemfileNotFoundError, GemfileUpdateNeededError, IncompatibleToysError, InstallFailedError
Constant Summary collapse
- DEFAULT_GEMFILE_NAMES =
The gemfile names that are searched by default.
[".gems.rb", "gems.rb", "Gemfile"].freeze
Class Method Summary collapse
-
.activate(name, *requirements) ⇒ :activated, ...
Activate the given gem.
Instance Method Summary collapse
-
#activate(name, *requirements) ⇒ :activated, ...
Activate the given gem.
-
#bundle(groups: nil, gemfile_path: nil, search_dirs: nil, gemfile_names: nil, retries: nil) ⇒ :setup, ...
Search for an appropriate Gemfile, and set up the bundle.
-
#initialize(on_missing: nil, on_conflict: nil, terminal: nil, input: nil, output: nil, suppress_confirm: nil, default_confirm: nil) ⇒ Gems
constructor
Create a new gem activator.
Constructor Details
#initialize(on_missing: nil, on_conflict: nil, terminal: nil, input: nil, output: nil, suppress_confirm: nil, default_confirm: nil) ⇒ Gems
Create a new gem activator.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/toys/utils/gems.rb', line 125 def initialize(on_missing: nil, on_conflict: nil, terminal: nil, input: nil, output: nil, suppress_confirm: nil, default_confirm: nil) require "rubygems" unless suppress_confirm.nil? warn("The :suppress_confirm argument to Toys::Utils::Gems is deprecated. " \ "Use :on_missing instead.") end default_confirm = true if default_confirm.nil? @default_confirm = default_confirm ? true : false @on_missing = on_missing || if suppress_confirm @default_confirm ? :install : :error else :confirm end @on_conflict = on_conflict || :error @terminal = terminal @input = input || $stdin @output = output || $stdout end |
Class Method Details
.activate(name, *requirements) ⇒ :activated, ...
Activate the given gem. If it is not present, attempt to install it (or inform the user to update the bundle).
93 94 95 |
# File 'lib/toys/utils/gems.rb', line 93 def self.activate(name, *requirements) new.activate(name, *requirements) end |
Instance Method Details
#activate(name, *requirements) ⇒ :activated, ...
Activate the given gem. If it is not present, attempt to install it (or inform the user to update the bundle).
164 165 166 167 168 169 170 |
# File 'lib/toys/utils/gems.rb', line 164 def activate(name, *requirements) Gems.synchronize do gem(name, *requirements) ? :activated : false rescue ::Gem::LoadError => e handle_activation_error(e, name, requirements) end end |
#bundle(groups: nil, gemfile_path: nil, search_dirs: nil, gemfile_names: nil, retries: nil) ⇒ :setup, ...
Search for an appropriate Gemfile, and set up the bundle.
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/toys/utils/gems.rb', line 195 def bundle(groups: nil, gemfile_path: nil, search_dirs: nil, gemfile_names: nil, retries: nil) Array(search_dirs).each do |dir| break if gemfile_path gemfile_path = Gems.find_gemfile(dir, gemfile_names: gemfile_names) end raise GemfileNotFoundError, "Gemfile not found" unless gemfile_path gemfile_path = ::File.absolute_path(gemfile_path) Gems.synchronize do setup_bundle(gemfile_path, groups: Array(groups), retries: retries) end end |