Module: Riaction::ClassMethods

Defined in:
lib/riaction/riaction.rb

Instance Method Summary collapse

Instance Method Details

#define_event(name, trigger, profile, params = {}, guard = nil) ⇒ Object



136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/riaction/riaction.rb', line 136

def define_event(name, trigger, profile, params = {}, guard = nil)
  class << self
    def riaction_events
      class_variable_defined?(:@@riaction_events) ? class_variable_get(:@@riaction_events) : class_variable_set(:@@riaction_events, {})
    end
  end
  
  events = riaction_events
  trigger = name unless trigger
  
  # store the event
  events[name] = {:trigger => trigger, :profile => profile, :params => params, :guard => guard}
  class_variable_set(:@@riaction_events, events)
  
  # Create the callback or the means to trigger it
  if Riaction.crud_actions.include? trigger
    send "after_#{trigger}".to_sym, Riaction::CrudEventCallback.new(name)
    
    define_method("trigger_#{name}!") do
      if self.riaction_log_event?(name)
        Resque.enqueue(Riaction::EventPerformer, name, self.class.base_class.to_s, self.id)
      end
    end
  else
    define_method("trigger_#{trigger}!") do
      if self.riaction_log_event?(name)
        Resque.enqueue(Riaction::EventPerformer, name, self.class.base_class.to_s, self.id)
      end
    end
  end
end

#define_profile(type, fields) ⇒ Object



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/riaction/riaction.rb', line 168

def define_profile(type, fields)
  class << self
    def riaction_profiles
      class_variable_defined?(:@@riaction_profiles) ? class_variable_get(:@@riaction_profiles) : class_variable_set(:@@riaction_profiles, {})
    end
  end
  
  profiles = riaction_profiles
  
  # store the profile
  profiles[type] = fields
  class_variable_set(:@@riaction_profiles, profiles)
  
  class << self
    def riaction_profile?
      true
    end
  end
end

#riaction(object_type, opts) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/riaction/riaction.rb', line 123

def riaction(object_type, opts)
  if object_type == :profile
    (PROFILE_CLASSES << self).uniq!
    define_profile(opts.delete(:type), opts)
    include Riaction::ProfileInstanceMethods unless instance_methods.include? :riaction_profile
    send "after_create".to_sym, Riaction::ProfileCreationCallback.new
  elsif object_type == :event
    (EVENT_LOGGING_CLASSES << self).uniq!
    define_event(opts[:name], opts[:trigger], opts[:profile], opts[:params], opts[:if])
    include Riaction::EventInstanceMethods unless instance_methods.include? :riaction_event
  end
end

#riaction_profile?Boolean

Returns:

  • (Boolean)


188
189
190
# File 'lib/riaction/riaction.rb', line 188

def riaction_profile?
  false
end