Module: Boxcars::OptionalDependency

Defined in:
lib/boxcars/optional_dependency.rb

Overview

Helper for feature-gated dependencies that are not required for core runtime.

Class Method Summary collapse

Class Method Details

.require!(gem_name, feature:, require_as: gem_name) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/boxcars/optional_dependency.rb', line 8

def self.require!(gem_name, feature:, require_as: gem_name)
  cache_key = "#{gem_name}:#{require_as}"
  return true if @loaded[cache_key]

  require require_as
  @loaded[cache_key] = true
  true
rescue LoadError
  raise Boxcars::ConfigurationError,
        "#{feature} requires the optional gem '#{gem_name}'. " \
        "Add `gem \"#{gem_name}\"` to your Gemfile."
end