class Sqreen::Actions::Base

Base class for actions subclasses must also implement some methods in their singleton classes (actions_matching, index and clear)

Attributes

type_name[R]
expiry[R]
id[R]
send_response[R]

Protected Class Methods

subclasses() click to toggle source
# File lib/sqreen/actions/base.rb, line 93
def subclasses
  @@subclasses
end
type_name=(name) click to toggle source
# File lib/sqreen/actions/base.rb, line 97
def type_name=(name)
  @type_name = name
  subclasses[name] = self
end

Private Class Methods

get_type_class(name) click to toggle source
# File lib/sqreen/actions/base.rb, line 69
def get_type_class(name)
  subclasses[name]
end
inherited(subclass) click to toggle source
# File lib/sqreen/actions/base.rb, line 85
def inherited(subclass)
  class << subclass
    public :new
  end
end
known_subclasses() click to toggle source
# File lib/sqreen/actions/base.rb, line 73
def known_subclasses
  subclasses.values
end
known_types() click to toggle source
# File lib/sqreen/actions/base.rb, line 77
def known_types
  subclasses.keys
end
new(id, opts) click to toggle source
# File lib/sqreen/actions/base.rb, line 20
def initialize(id, opts)
  @id = id
  duration = opts[:duration]
  @expiry = Time.new + duration unless duration.nil?
  @send_response = if opts[:send_response].nil?
                     true
                   else
                     opts[:send_response] ? true : false
                   end
end
new_index() click to toggle source
# File lib/sqreen/actions/base.rb, line 81
def new_index
  raise 'implement in singletons of subclasses'
end

Public Instance Methods

run(*args) click to toggle source

See Sqreen::CB for return values

# File lib/sqreen/actions/base.rb, line 32
def run(*args)
  return if expiry && Time.new > expiry
  ret = do_run(*args)
  unless ret.nil? || !@send_response
    Sqreen.internal_track(event_name,
                          'properties' => {
                            'output' => event_properties(*args),
                            'action_id' => id,
                          })
  end
  ret
end

Protected Instance Methods

do_run(*_args) click to toggle source
# File lib/sqreen/actions/base.rb, line 47
def do_run(*_args)
  raise ::Sqreen::NotImplementedYet, "do_run not implemented in #{self.class}"
  # implement in subclasses
end
event_properties(*_run_args) click to toggle source
# File lib/sqreen/actions/base.rb, line 52
def event_properties(*_run_args)
  raise ::Sqreen::NotImplementedYet, "event_properties not implemented in #{self.class}"
  # implement in subclasses
end

Private Instance Methods

event_name() click to toggle source
# File lib/sqreen/actions/base.rb, line 59
def event_name
  "sq.action.#{self.class.type_name}"
end