Sha256: bc354a0a302d2618c97f16738d35a55c34081135f3d7ea377aaa502d4fedcadd

Contents?: true

Size: 753 Bytes

Versions: 5

Compression:

Stored size: 753 Bytes

Contents

module Houdini
  module Model
    extend ActiveSupport::Concern

    module ClassMethods
      def houdini(blueprint, options={})
        task_manager = options.delete(:task_manager) || TaskManager
        callback = options.delete(:on)

        task_manager.register self, blueprint.to_sym, options

        submit_method_name = "houdini_submit_#{blueprint}!".to_sym

        # Using a module so that you can use override/modify the method via `super`
        m = Module.new do
          define_method submit_method_name do
            task_manager.submit! self, blueprint
          end
        end
        include m

        # attach the submit method via the callback
        send callback, submit_method_name if callback
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
houdini-0.3.4 lib/houdini/model.rb
houdini-0.3.3 lib/houdini/model.rb
houdini-0.3.2 lib/houdini/model.rb
houdini-0.3.1 lib/houdini/model.rb
houdini-0.3.0 lib/houdini/model.rb