All Projects → thoughtbot → what

thoughtbot / what

Licence: MIT License
Adds boolean instance methods for MIME type checking to Rails

Programming Languages

ruby
36898 projects - #4 most used programming language

DEPRECATED

This plugin is now deprecated. If you would like to dispatch on the MIME type from within a Rails controller you should use the #respond_to method or the mobile_fu plugin.

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 © 2008 Dan Croak, Jared Carroll, and thoughtbot, inc. released under the MIT license

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].