module Pult::Panel::App::DotAccessible

Constants

JOB_KEY
RunnerInjector

Public Instance Methods

method_missing(meth, *args) click to toggle source
# File lib/pult/panel/app/dot_accessible.rb, line 13
def method_missing meth, *args
  /(?<action>[^\!]+)(?<need_execute>\!?)/ =~ meth.to_s

  for injection in [JOB_KEY] + RunnerInjector.read_injections
    action.gsub! /#{injection}$/, ''
    break if $&
  end

  value = self[action]

  if !need_execute.blank?
    if value.respond_to? :app?
      with_job? $& do
        for sub_action in value.keys
          value.send "#{sub_action}!", *args
        end
      end
    else
      return execute!(action, $&, *args)
    end
  end

  $& ? nil : value
end

Private Instance Methods

execute!(action, injection=nil, *args) click to toggle source
# File lib/pult/panel/app/dot_accessible.rb, line 44
def execute! action, injection=nil, *args
  job = job?(injection) ? injection : nil

  runner = Pult::Panel::Executor.send "run#{job}!", self, action, *args

  if injection && !job
    return send("#{action}#{injection}")
  else
    return runner
  end
end
job?(str) click to toggle source
# File lib/pult/panel/app/dot_accessible.rb, line 56
def job? str
  str == JOB_KEY
end
with_job?(injection, &block) click to toggle source
# File lib/pult/panel/app/dot_accessible.rb, line 40
def with_job? injection, &block
  job?(injection) ? Job.perform_later(block.object_id) : block.call
end