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
-
#gem(name, *requirements, **options) ⇒ void
Activate the given gem.
-
#gems ⇒ Toys::Utils::Gems
A tool-wide instance of Utils::Gems.
Methods included from Mixin
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).
69 70 71 |
# File 'lib/toys/standard_mixins/gems.rb', line 69 def gem(name, *requirements, **) self.class.gem(name, *requirements, **) end |
#gems ⇒ Toys::Utils::Gems
A tool-wide instance of Utils::Gems.
57 58 59 |
# File 'lib/toys/standard_mixins/gems.rb', line 57 def gems self.class.gems end |