Module: Riaction::ClassMethods
- Defined in:
- lib/riaction/riaction.rb
Instance Method Summary collapse
- #define_event(name, trigger, profile, params = {}, guard = nil) ⇒ Object
- #define_profile(type, fields) ⇒ Object
- #riaction(object_type, opts) ⇒ Object
- #riaction_profile? ⇒ Boolean
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
188 189 190 |
# File 'lib/riaction/riaction.rb', line 188 def riaction_profile? false end |