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