module Riffer::Helpers::Dependencies
Helper module for lazy loading gem dependencies.
Used by providers to load their required gems only when needed.
Public Instance Methods
Source
# File lib/riffer/helpers/dependencies.rb, line 23 def depends_on(gem_name, req: true) gem(gem_name) return true unless defined?(Bundler) gem_version = Gem.loaded_specs[gem_name].version gem_dependency = Bundler.load.dependencies.find { |g| g.name == gem_name } gem_requirement = gem_dependency&.requirement unless gem_requirement raise VersionError, "The #{gem_name} gem is installed but not specified in your Bundler dependencies (e.g., Gemfile)." end unless gem_requirement.satisfied_by?(gem_version) raise VersionError, "The #{gem_name} gem is installed, but version #{gem_requirement} is required. You have #{gem_version}." end lib_name = gem_name if req == true lib_name = req if req.is_a?(String) require(lib_name) if lib_name true rescue ::LoadError raise LoadError, "Could not load #{gem_name}. Please ensure that the #{gem_name} gem is installed." end
Declares a dependency on a gem.
Verifies the gem is installed and satisfies version requirements, then requires it.
Raises LoadError if the gem is not installed. Raises VersionError if the gem version does not satisfy requirements.
: (String, ?req: (bool | String)) -> true