Module: Responders::ControllerMethod

Defined in:
lib/responders/controller_method.rb

Instance Method Summary collapse

Instance Method Details

#responders(*responders) ⇒ Object

Adds the given responders to the current controller’s responder, allowing you to cherry-pick which responders you want per controller.

class InvitationsController < ApplicationController
  responders :flash, :http_cache
end

Takes symbols and strings and translates them to VariableResponder (eg. :flash becomes FlashResponder). Also allows passing in the responders modules in directly, so you could do:

responders FlashResponder, HttpCacheResponder

Or a mix of both methods:

responders :flash, MyCustomResponder


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/responders/controller_method.rb', line 21

def responders(*responders)
  self.responder = responders.inject(Class.new(responder)) do |klass, responder|
    responder = \
      case responder
      when Module
        responder
      when String, Symbol
        Responders.const_get("#{responder.to_s.camelize}Responder")
      else
        raise "responder has to be a string, a symbol or a module"
      end

    klass.send(:include, responder)
    klass
  end
end