Module: Toys::StandardMixins::Gems

Includes:
Mixin
Defined in:
lib/toys/standard_mixins/gems.rb

Overview

Provides methods for installing and activating third-party gems. When this mixin is included, it provides a gem method that has the same effect as Utils::Gems#activate, so you can ensure a gem is present when running a tool. A gem directive is likewise added to the tool DSL itself, so you can also ensure a gem is present when defining a tool.

Usage

Make these methods available to your tool by including this mixin in your tool:

include :gems

You can then call the mixin method #gem to ensure that a gem is installed and in the load path. For example:

tool "my_tool" do
  include :gems
  def run
    gem "nokogiri", "~> 1.15"
    # Do stuff with Nokogiri
  end
end

If you pass additional options to the include directive, those are used to initialize settings for the gem install process. For example:

include :gems, on_missing: :error

You can also pass options to the #gem mixin method itself:

tool "my_tool" do
  include :gems
  def run
    # If the gem is not installed, error out instead of asking to
    # install it.
    gem "nokogiri", "~> 1.15", on_missing: :error
    # Do stuff with Nokogiri
  end
end

See Utils::Gems#initialize for a list of supported options.

Instance Method Summary collapse

Methods included from Mixin

create

Instance Method Details

#gem(name, *requirements, **options) ⇒ 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/standard_mixins/gems.rb', line 69

def gem(name, *requirements, **options)
  self.class.gem(name, *requirements, **options)
end

#gemsToys::Utils::Gems

A tool-wide instance of Utils::Gems.

Returns:



57
58
59
# File 'lib/toys/standard_mixins/gems.rb', line 57

def gems
  self.class.gems
end