Module: Langchain::DependencyHelper
- Included in:
- LLM::Base, Processors::Base, Tool::Calculator, Tool::Database, Tool::GoogleSearch, Tool::RubyCodeInterpreter, Tool::Wikipedia, Vectorsearch::Base
- Defined in:
- lib/langchain/dependency_helper.rb
Defined Under Namespace
Classes: LoadError, VersionError
Instance Method Summary collapse
-
#depends_on(gem_name, req: true) ⇒ Boolean
This method requires and loads the given gem, and then checks to see if the version of the gem meets the requirements listed in
langchain.gemspecThis solution was built to avoid auto-loading every single gem in the Gemfile when the developer will mostly likely be only using a few of them.
Instance Method Details
#depends_on(gem_name, req: true) ⇒ Boolean
This method requires and loads the given gem, and then checks to see if the version of the gem meets the requirements listed in langchain.gemspec This solution was built to avoid auto-loading every single gem in the Gemfile when the developer will mostly likely be only using a few of them.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/langchain/dependency_helper.rb', line 17 def depends_on(gem_name, req: true) gem(gem_name) # require the gem return(true) unless defined?(Bundler) # If we're in a non-bundler environment, we're no longer able to determine if we'll meet requirements gem_version = Gem.loaded_specs[gem_name].version gem_requirement = Bundler.load.dependencies.find { |g| g.name == gem_name }&.requirement raise LoadError unless gem_requirement 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 |