public
Description: Adds boolean instance methods for MIME type checking to Rails
Clone URL: git://github.com/thoughtbot/what.git
what /
name age message
file MIT-LICENSE Wed Feb 20 08:46:15 -0800 2008 refactoring [jcarroll]
file README Wed Feb 20 15:11:54 -0800 2008 README updates [dcroak]
file Rakefile Mon Feb 18 20:31:47 -0800 2008 created the what plugin [dcroak]
file init.rb Fri Feb 22 12:07:16 -0800 2008 added tests for the negative conditions [jcarroll]
file install.rb Fri Feb 22 12:07:16 -0800 2008 added tests for the negative conditions [jcarroll]
directory lib/ Wed Feb 20 08:46:15 -0800 2008 refactoring [jcarroll]
directory tasks/ Mon Feb 18 20:31:47 -0800 2008 created the what plugin [dcroak]
directory test/ Fri Feb 22 12:07:16 -0800 2008 added tests for the negative conditions [jcarroll]
file uninstall.rb Fri Feb 22 12:07:16 -0800 2008 added tests for the negative conditions [jcarroll]
README
What
====

What provides boolean query methods on Mime::Type instances 
for the native Rails mime-types. You now have these methods
available from your controllers:

request.format.atom?
request.format.css?
request.format.csv?
request.format.html?
request.format.ics?
request.format.js?
request.format.json?
request.format.multipart_form?
request.format.rss?
request.format.text?
request.format.url_encoded_form?
request.format.xml?
request.format.yaml?

... and any custom mime types that you add in any environment specific config files.

Examples
========

# config/initializers/mime_types.rb

Mime::Type.register 'text/iphone', :iphone

# app/controllers/what_controller.rb

class WhatController < ApplicationController

  before_filter :csv?, :iphone?

  def index
    render :text => 'index'
  end

  protected

  def csv?
    if request.format.csv?
      redirect_to login_url
    end
  end

  def iphone?
    if request.format.iphone?
      redirect_to login_url
    end
  end

end

What is especially powerful in combination with When.

# app/controllers/what_controller.rb

class WhatController < ApplicationController

  before_filter :login, :if => :csv?
  before_filter :login, :if => lambda { |controller| controller.request.format.iphone? }

  def index
    render :text => 'index'
  end

  protected

  def csv?
    request.format.csv?
  end

  def login
    redirect_to login_url
  end

end

Copyright (c) 2008 Dan Croak, Jared Carroll, and thoughtbot, inc. released under the MIT license