Sha256: 44a94098fc5d0a6d03eb6be77922990fa934819f08f508b87f312808e1815742
Contents?: true
Size: 934 Bytes
Versions: 1
Compression:
Stored size: 934 Bytes
Contents
module TimelineFu module Fires def self.included(klass) klass.send(:extend, ClassMethods) end module ClassMethods def fires(event_type, opts) raise ArgumentError, "Argument :on is mandatory" unless opts.has_key?(:on) opts[:subject] = :self unless opts.has_key?(:subject) on = opts.delete(:on) _if = opts.delete(:if) method_name = :"fire_#{event_type}_after_#{on}" define_method(method_name) do create_options = opts.keys.inject({}) do |memo, sym| case opts[sym] when :self memo[sym] = self else memo[sym] = send(opts[sym]) if opts[sym] end memo end create_options[:event_type] = event_type.to_s TimelineEvent.create!(create_options) end send(:"after_#{on}", method_name, :if => _if) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mifix-timeline_fu-0.2.0 | lib/timeline_fu/fires.rb |