Class: Toys::Utils::Gems

Inherits:
Object
  • Object
show all
Defined in:
lib/toys/utils/gems.rb

Overview

A helper module that activates and installs gems.

This class is not loaded by default. Before using it directly, you should require "toys/utils/gems"

Defined Under Namespace

Classes: ActivationFailedError, GemfileUpdateNeededError, InstallFailedError

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input: $stdin, output: $stderr, suppress_confirm: false, default_confirm: true) ⇒ Gems

Create a new gem activator.

Parameters:

  • input (IO) (defaults to: $stdin)

    Input IO

  • output (IO) (defaults to: $stderr)

    Output IO

  • suppress_confirm (Boolean) (defaults to: false)

    Suppress the confirmation prompt and just use the given default_confirm value. Default is false, indicating the confirmation prompt appears by default.

  • default_confirm (Boolean) (defaults to: true)

    Default response for the confirmation prompt. Default is true.



84
85
86
87
88
89
90
91
92
93
94
# File 'lib/toys/utils/gems.rb', line 84

def initialize(input: $stdin,
               output: $stderr,
               suppress_confirm: false,
               default_confirm: true)
  require "toys/utils/terminal"
  require "toys/utils/exec"
  @terminal = Utils::Terminal.new(input: input, output: output)
  @exec = Utils::Exec.new
  @suppress_confirm = suppress_confirm ? true : false
  @default_confirm = default_confirm ? true : false
end

Class Method Details

.activate(name, *requirements) ⇒ void

This method returns an undefined value.

Activate the given gem. If it is not present, attempt to install it (or inform the user to update the bundle).

Parameters:

  • name (String)

    Name of the gem

  • requirements (String...)

    Version requirements



69
70
71
# File 'lib/toys/utils/gems.rb', line 69

def self.activate(name, *requirements)
  new.activate(name, *requirements)
end

Instance Method Details

#activate(name, *requirements) ⇒ void

This method returns an undefined value.

Activate the given gem. If it is not present, attempt to install it (or inform the user to update the bundle).

Parameters:

  • name (String)

    Name of the gem

  • requirements (String...)

    Version requirements



104
105
106
107
108
# File 'lib/toys/utils/gems.rb', line 104

def activate(name, *requirements)
  gem(name, *requirements)
rescue ::Gem::LoadError => e
  handle_activation_error(e, name, requirements)
end