public
Description: response for lets you decorate your actions respond_to blocks
Homepage: http://blog.ardes.com/response_for
Clone URL: git://github.com/ianwhite/response_for.git
Click here to lend your support to: response_for and make a donation at www.pledgie.com !
README.rdoc

response_for

response_for (see Ardes::ResponseFor::ClassMethods) allows you to decorate the respond_to block of actions on sublcassed controllers. This works nicely with plugins.ardes.com/doc/resources_controller

Current Version 0.2-stable

Version 0.2-stable of response_for has BC-breaking API changes, has vastly simplified internals, and is supported only for Rails >= 2.1.x.

Version 0.2.0 was released on Sept 14th 2008.

As of version 0.2.0, response_for’s functionality can be summed up in one sentence:

"response_for allows you to specify default responses for any action (or before filter) that doesn’t render or redirect"

Actions typically do two things - interact with models, and provide a repsonse. The above simple idea allows you to decouple these two functions (where appropriate), which means abstraction of common patterns becomes possible.

Example

  class FooController < ApplicationController
    def index
      @foos = Foo.find(:all)
      # default response - render html
    end
  end

  # this controller needs to respond_to fbml on index.
  # Using response_for, we don't need to repeat '@foos = Foo.find(1)'
  class SpecialFooController < FooController
    response_for :index do |format|
      format.fbml { render :inline => turn_into_facebook(@foos) }
    end
  end

Specs and Coverage

  • The SPECDOC lists the specifications
  • Coverage is 100% (C0), and the spec suite is quite comprehensive

RSpec is used for testing, so the tests are in spec/ rather than test/ Do rake —tasks for more details.

Continuous Integration

garlic (at github.com/ianwhite/garlic) is used for CI. To run the CI suite have a look at garlic_example.rb

Previous Versions: 0.1

There is a branch for rails 2.0 users on this release. If you are using rails 2.0, then you want the 0.1-stable-rails2.0 branch. If you are using rails >= 2.1 then use the 0.1-stable branch