Sha256: 6548ec56f21d4366234f97e64ec389cda503a55c67dd9aba33d8264bedcb6be7

Contents?: true

Size: 1.73 KB

Versions: 21

Compression:

Stored size: 1.73 KB

Contents

require 'resourceful/builder'

module Resourceful
  module Default
    # This module is mostly meant to be used by the make_resourceful default actions.
    # It provides various methods that declare where callbacks set in the +make_resourceful+ block,
    # like Builder#before and Builder#response_for,
    # should be called.
    module Callbacks
      # Calls any +before+ callbacks set in the +make_resourceful+ block for the given event.
      def before(event)
        resourceful_fire(:before, event.to_sym)
      end

      # Calls any +after+ callbacks set in the +make_resourceful+ block for the given event.
      def after(event)
        resourceful_fire(:after, event.to_sym)
      end

      # Calls any +response_for+ callbacks set in the +make_resourceful+ block for the given event.
      # Note that these aren't called directly,
      # but instead passed along to Rails' respond_to method.
      def response_for(event)
        if responses = self.class.read_inheritable_attribute(:resourceful_responses)[event.to_sym]
          respond_to do |format|
            responses.each do |key, value|
              format.send(key, &scope(value))
            end
          end
        end
      end

      # Returns a block identical to the given block,
      # but in the context of the current controller.
      # The returned block accepts no arguments,
      # even if the given block accepted them.
      def scope(block)
        lambda do
          instance_eval(&(block || lambda {}))
        end
      end

      private

      def resourceful_fire(type, name)
        callbacks = self.class.read_inheritable_attribute(:resourceful_callbacks)[type][name] || []
        callbacks.each { |callback| scope(callback).call }
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 3 rubygems

Version Path
radiant-templates-extension-1.0.8 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
radiant-templates-extension-1.0.7 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
easy_admin_ui-0.5.6 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
easy_admin_ui-0.5.5 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
easy_admin_ui-0.5.4 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
easy_admin_ui-0.5.3 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
easy_admin_ui-0.5.2 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
easy_admin_ui-0.5.1 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
easy_admin_ui-0.5.0 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
radiant-templates-extension-1.0.6 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
radiant-templates-extension-1.0.5 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
radiant-templates-extension-1.0.4 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
radiant-templates-extension-1.0.3 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
radiant-templates-extension-1.0.2 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
radiant-templates-extension-1.0.1 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
radiant-templates-extension-1.0.0 vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
hubbub-0.0.11 lib/vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
hubbub-0.0.10 lib/vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
hubbub-0.0.9 lib/vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb
hubbub-0.0.8 lib/vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb