class Card::Set::Event

Supports the definition of events via the {Api Events API}

Constants

CONDITIONS

Attributes

opts[R]
set_module[R]

Public Class Methods

new(event, set_module) click to toggle source
# File lib/card/set/event.rb, line 85
def initialize event, set_module
  @event = event
  @set_module = set_module
end

Public Instance Methods

block() click to toggle source
# File lib/card/set/event.rb, line 108
def block
  @event_block
end
define() click to toggle source
# File lib/card/set/event.rb, line 97
def define
  Card.define_callbacks @event
  define_event
  set_event_callbacks
end
delaying_method_name() click to toggle source

the name for the method that adds the event to the delayed job queue

# File lib/card/set/event.rb, line 120
def delaying_method_name
  "#{@event}_with_delay"
end
name() click to toggle source

@return the name of the event

# File lib/card/set/event.rb, line 104
def name
  @event
end
register(stage_or_opts, opts, &final) click to toggle source
# File lib/card/set/event.rb, line 90
def register stage_or_opts, opts, &final
  @opts = event_opts stage_or_opts, opts
  @event_block = final
  validate_conditions
  define
end
simple_method_name() click to toggle source

the name for the method that only executes the code defined in the event

# File lib/card/set/event.rb, line 114
def simple_method_name
  "#{@event}_without_callbacks"
end

Private Instance Methods

define_event() click to toggle source

EVENT DEFINITION

# File lib/card/set/event.rb, line 128
def define_event
  define_simple_method
  define_event_method
end
define_event_method() click to toggle source
# File lib/card/set/event.rb, line 139
def define_event_method
  send "define_#{event_type}_event_method"
end
define_simple_method() click to toggle source
# File lib/card/set/event.rb, line 133
def define_simple_method
  @set_module.class_exec(self) do |event|
    define_method event.simple_method_name, &event.block
  end
end
define_standard_event_method(method_name=simple_method_name) click to toggle source
# File lib/card/set/event.rb, line 147
def define_standard_event_method method_name=simple_method_name
  is_integration = @stage.to_s.match?(/integrate/)
  @set_module.class_exec(@event) do |event_name|
    define_method event_name do
      rescuing_if_integration is_integration do
        log_event_call event_name
        run_callbacks event_name do
          send method_name
        end
      end
    end
  end
end
event_type() click to toggle source
# File lib/card/set/event.rb, line 143
def event_type
  with_delay?(@opts) ? :delayed : :standard
end