class Pleiades::Command::Factory

Public Class Methods

new(event, path_info) click to toggle source
# File lib/pleiades/core/command/factory.rb, line 11
def initialize(event, path_info)
  @event = event
  @path_info = path_info
end
production(event, path_info) click to toggle source
# File lib/pleiades/core/command/factory.rb, line 6
def self.production(event, path_info)
  @factory = new(event, path_info)
  @factory.operate
end

Public Instance Methods

operate() click to toggle source
# File lib/pleiades/core/command/factory.rb, line 16
def operate
  executor_class(decorate_command(command_class))
end

Private Instance Methods

command_class() click to toggle source
# File lib/pleiades/core/command/factory.rb, line 22
def command_class
  klass_path = @path_info[:command_path] || Pleiades::Config.command.default

  command_constantize(klass_path).new(@event)
end
command_constantize(path) click to toggle source
# File lib/pleiades/core/command/factory.rb, line 28
def command_constantize(path)
  path.split('/').map(&:camelize).join('::').constantize
end
decorate_command(command) click to toggle source
# File lib/pleiades/core/command/factory.rb, line 39
def decorate_command(command)
  concerns = @path_info[:concern].map(&:constantize)
  command.class_eval do
    concerns.each do |concern|
      include concern
    end
  end
  command
end
executor_class(command) click to toggle source
# File lib/pleiades/core/command/factory.rb, line 32
def executor_class(command)
  @path_info[:executor].constantize.new(
    command,
    @path_info[:call_method]
  )
end