Module: Marko::Pluggable

Included in:
Compiler, Markup::MacroProcessor, Parser, Storage, Validator
Defined in:
lib/marko/gadgets/pluggable.rb

Overview

Pluggable mixin serves for dependency injection

Examples:

class Storage
  extend Pluggable
  def call
  end
end

StoragePort = Storage.port

class SequelStorage < Storage
end

StoragePort.plugged = SequelStorage.new

require 'forwardable'
class Service
  extend Forwardable
  def_delegator :StoragePort, :plugged, :storage
  def call
    storage.call
  end
end

Defined Under Namespace

Modules: Plug

Instance Method Summary collapse

Instance Method Details

#plugObject



30
31
32
33
34
35
36
# File 'lib/marko/gadgets/pluggable.rb', line 30

def plug
  klass = self
  Module.new {
    extend Plug;
    plug klass
  }
end