module Toys::StandardMixins::Gems
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 {Toys::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.
You may make these methods available to your tool by including the following directive in your tool configuration:
include :gems
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
See {Toys::Utils::Gems#initialize} for a list of supported options.
Public Class Methods
@private
# File lib/toys/standard_mixins/gems.rb, line 40 def self.gem(name, *requirements) gems.activate(name, *requirements) end
@private
# File lib/toys/standard_mixins/gems.rb, line 32 def self.gems require "toys/utils/gems" # rubocop:disable Naming/MemoizedInstanceVariableName @__gems ||= Utils::Gems.new(**@__gems_opts) # rubocop:enable Naming/MemoizedInstanceVariableName end
Public Instance Methods
Activate the given gem.
@param name [String] Name of the gem @param requirements [String…] Version requirements @return [void]
# File lib/toys/standard_mixins/gems.rb, line 60 def gem(name, *requirements) self.class.gems.activate(name, *requirements) end
A tool-wide instance of {Toys::Utils::Gems}. @return [Toys::Utils::Gems]
# File lib/toys/standard_mixins/gems.rb, line 49 def gems self.class.gems end