Module: TrustyCms::ResourceResponses::InstanceMethods
- Defined in:
- lib/trusty_cms/resource_responses.rb
Instance Method Summary collapse
Instance Method Details
#response_for(action) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/trusty_cms/resource_responses.rb', line 16 def response_for(action) responses = self.class.responses.send(action) respond_to do |wants| responses.each_format do |f, format_block| if format_block wants.send(f, &wrap(format_block)) else wants.send(f) end end responses.each_published do |pub, pub_block| wants.send(pub, &wrap(pub_block)) end if responses.default wants.any(&wrap(responses.default)) else wants.any end end end |
#wrap(proc) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/trusty_cms/resource_responses.rb', line 37 def wrap(proc) # Makes sure our response blocks get evaluated in the right context lambda do # Ruby 1.9.2 yields self in instance_eval... see https://gist.github.com/479572 # lambdas are as strict as methods in 1.9.x, making sure that the args match, Procs are not. if RUBY_VERSION =~ /^1\.9/ && proc.lambda? && (proc.arity != 1) raise "You can only pass a proc ('Proc.new') or a lambda that takes exactly one arg (for self) to the wrap method." end instance_eval(&proc) end end |