Class: Appraisal::GemManager::Factory

Inherits:
Object
  • Object
show all
Defined in:
lib/appraisal/gem_manager/factory.rb

Overview

Factory for creating gem manager adapters. Raises errors for unknown or unavailable gem managers.

Constant Summary collapse

ADAPTERS =
{
  "bundler" => BundlerAdapter,
  "ore" => OreAdapter
}.freeze
DEFAULT_MANAGER =
"bundler"

Class Method Summary collapse

Class Method Details

.available_managersArray<String>

List of available gem manager names

Returns:

  • (Array<String>)


40
41
42
# File 'lib/appraisal/gem_manager/factory.rb', line 40

def available_managers
  ADAPTERS.keys
end

.create(gemfile_path, project_root, manager: nil) ⇒ Base

Create a gem manager adapter

Parameters:

  • gemfile_path (String)

    path to the gemfile

  • project_root (Pathname)

    root directory of the project

  • manager (String, nil) (defaults to: nil)

    gem manager name (bundler or ore)

Returns:

  • (Base)

    gem manager adapter instance

Raises:



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/appraisal/gem_manager/factory.rb', line 26

def create(gemfile_path, project_root, manager: nil)
  manager_name = normalize_manager_name(manager)

  adapter_class = ADAPTERS.fetch(manager_name) do
    raise UnknownGemManagerError.new(manager_name, ADAPTERS.keys)
  end

  adapter = adapter_class.new(gemfile_path, project_root)
  adapter.validate_availability!
  adapter
end