module Resourceful::Default::Callbacks

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.

Public Instance Methods

after(event) click to toggle source

Calls any after callbacks set in the make_resourceful block for the given event.

# File lib/resourceful/default/callbacks.rb, line 16
def after(event)
  resourceful_fire(:after, event.to_sym)
end
before(event) click to toggle source

Calls any before callbacks set in the make_resourceful block for the given event.

# File lib/resourceful/default/callbacks.rb, line 11
def before(event)
  resourceful_fire(:before, event.to_sym)
end
response_for(event) click to toggle source

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.

# File lib/resourceful/default/callbacks.rb, line 23
def response_for(event)
  if responses = self.class.resourceful_responses[event.to_sym]
    respond_to do |format|
      responses.each do |key, value|
        format.send(key, &scope(value))
      end
    end
  end
end
scope(block) click to toggle source

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.

# File lib/resourceful/default/callbacks.rb, line 37
def scope(block)
  proc do
    instance_eval(&(block || proc {}))
  end
end

Private Instance Methods

resourceful_fire(type, name) click to toggle source
# File lib/resourceful/default/callbacks.rb, line 45
def resourceful_fire(type, name)
  callbacks = self.class.resourceful_callbacks[type][name] || []
  callbacks.each { |callback| scope(callback).call }
end