Top Level Namespace

Defined Under Namespace

Modules: ActiveAgent, Erb, TestUnit

Constant Summary collapse

GEM_LOADERS =
{
  anthropic: [ "anthropic", "~> 1.12", "anthropic" ],
  openai:    [ "openai",    "~> 0.34", "openai" ]
}

Instance Method Summary collapse

Instance Method Details

#require_gem!(type, file_name) ⇒ void

This method returns an undefined value.

Requires a provider’s gem dependency.

Parameters:

  • type (Symbol)

    provider type (:anthropic, :openai)

  • file_name (String)

    for error context

Raises:

  • (LoadError)

    when required gem is not installed



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/active_agent/providers/_base_provider.rb', line 21

def require_gem!(type, file_name)
  gem_name, requirement, package_name = GEM_LOADERS.fetch(type)
  provider_name = file_name.split("/").last.delete_suffix(".rb").camelize

  begin
    gem(gem_name, requirement)
    require(package_name)
  rescue LoadError
    raise LoadError, "The '#{gem_name}' gem is required for #{provider_name}. Please add it to your Gemfile and run `bundle install`."
  end
end