Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Use Roar's representers in Rails.
Ruby JavaScript

This branch is 222 commits behind apotonick:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
gemfiles
lib
test
.gitignore
.travis.yml
CHANGES.markdown
Gemfile
README.markdown
Rakefile
roar-rails.gemspec

README.markdown

roar-rails

Makes using Roar's representers in your Rails app fun.

Features

  • Rendering with responders
  • Parsing incoming documents
  • URL helpers in representers
  • Better tests
  • Autoloading

Rendering with #respond_with

Easily render resources using representers with the built-in responder.

class SingersController < ApplicationController
  include Roar::Rails::ControllerAdditions
  respond_to :json

  def show
    singer = Singer.find_by_id(params[:id])
    respond_with singer
  end
end

Need to use a representer with a different name than your model? Pass it in using the :with_representer option:

class SingersController < ApplicationController
  include Roar::Rails::ControllerAdditions
  respond_to :json

  def show
    singer = Musician.find_by_id(params[:id])
    respond_with singer, :with_representer => SingerRepresenter
  end
end

Goes great with Jose Valim's responders gem!

class SingersController < ApplicationController
  respond_to :json

  responders Roar::Rails::Responder

  def show
    singer = Singer.find_by_id(params[:id])
    respond_with singer
  end

end

Parsing incoming documents

In #create and #update actions it is often necessary to parse the incoming representation and map it to a model instance. Use the #consume! method for this.

class SingersController < ApplicationController
  respond_to :json

  def create
    singer = Singer.new
    consume!(singer)

    respond_with singer
  end
end

The consume! call will roughly do the following.

singer.
  extend(SingerRepresenter)
  from_json(request.body)

So, #consume! helps you figuring out the representer module and reading the incoming document.

URL Helpers

Any URL helpers from the Rails app are automatically available in representers.

module FruitRepresenter
  include Roar::Representer::JSON

  link :self do
    fruit_url self
  end

To get the hyperlinks up and running, please make sure to set the right host name in your environment files (config/environments):

config.representer.default_url_options = {:host => "127.0.0.1:3000"}

Testing

Autoloading

Put your representers in app/representers and they will be autoloaded by Rails. Also, frequently used modules as media representers and features don't need to be required manually.

Contributors

  • Railslove and especially Michael Bumann [bumi] have heavily supported development of roar-rails ("resource :singers").
Something went wrong with that request. Please try again.