class Tower::Service

Public Class Methods

later(*args) click to toggle source
# File lib/tower/service.rb, line 17
def self.later(*args)
  Tower::Queue.add self, *args
end
new(*args) click to toggle source
Initialize

takes any number of args which are set as instance variables

# File lib/tower/service.rb, line 24
def initialize(*args)
  set_instance_variables args
end
now(*args) click to toggle source

run service now

# File lib/tower/service.rb, line 13
def self.now(*args)
  new(*args).run
end
takes(*names) click to toggle source
Takes

setup args for runners

# File lib/tower/service.rb, line 5
def self.takes(*names)
  return @takes if names.empty?
  @takes = names
end

Public Instance Methods

perform() click to toggle source
# File lib/tower/service.rb, line 33
def perform; run; end
run() click to toggle source
Run

called by Service.now after initializing new service override with service logic

# File lib/tower/service.rb, line 32
def run; raise NotImplementedError; end

Private Instance Methods

set_instance_variables(values) click to toggle source

@params args array from initialize creates an instance variable for each arg passed to initialize variable names pulled from self.class.args

# File lib/tower/service.rb, line 44
def set_instance_variables(values)
  values.each_with_index do |value,i|
    name = self.class.takes[i]
    instance_variable_set "@#{name}",value
  end
end