Class: ActiveAdapter::Engine

Inherits:
Object
  • Object
show all
Defined in:
lib/active_adapter/engine.rb

Class Method Summary collapse

Class Method Details

.adapt(adapter) ⇒ Object

To adapt engine object for a real object

Examples:

# vehicle.rb
class Vehicle < ActiveAdapter::Engine; end

# vehicle_adapters/abstract.rb
class VehicleAdapters::Abstract < ActiveAdapter::Abstract
  def run
    adapter.run
  end
end

# vehicle_adapters/car.rb
class VehicleAdapters::Car < ActiveAdapter::Implement
  def run
    "Car running..."
  end
end

vehicle = Vehicle.adapt(:car)
vehicle.run # => "Car running..."

Parameters:

  • adapter (#to_sym)

    Adapter class name

Returns:

  • (Object)

    The real object with a adapter

Raises:



31
32
33
34
35
36
37
38
39
# File 'lib/active_adapter/engine.rb', line 31

def adapt(adapter)
  adapters[adapter.to_s] ||= begin
    module_name = "#{name.deconstantize}::#{name.demodulize}Adapters"
    abstract_adapter_class = get_abstract_adapter_class(module_name)
    implement_adapter_class = get_implement_adapter_class(module_name, adapter)
    implement_adapter_class.abstract_adapter = abstract_adapter_class
    abstract_adapter_class.new(implement_adapter_class)
  end
end