Plugins - Cacheable Flash

StarAdd to favorites

Installation

ruby script/plugin install svn://rubyforge.org/var/svn/pivotalrb/cacheable_flash/trunk

Description

This plugin enables greater levels of page caching by rendering flash messages from a cookie using JavaScript, instead of in your Rails view template. Flash contents are converted to JSON and placed in a cookie by an after_filter in a controller.

Usage

To use, include the CacheableFlash module in your controller. It’s all or none on the actions in your controller, so you can’t mix JS and HTML display of your flash message in a controller. No other modifications to the controller are needed. You will need to add divs and some javascript to your view or layout templates to render the flash in the browser.

Note that the cookie holding the flash messages is removed as the page is displayed, so a refresh will clear the flash message (just as happens normally).

Example Controller

class MyController < ActionController::Base

  include CacheableFlash
  # ...

end

Example Template Markup

    Flash.transferFromCookies();
    Flash.writeDataTo('error', $('error_div_id'));
    Flash.writeDataTo('notice', $('notice_div_id'));

Testing

You can test your flash cookies by asserting the json of the "flash" cookie. Cacheable Flash provides test helpers which includes the flash_cookie method.

Test::Unit Example

  require "cacheable_flash/test_helpers"

  class TestController < ActionController::Base
    def index
      flash["notice"] = "In index"
    end
  end

  class ControllerTest < Test::Unit::TestCase
    include CacheableFlash::TestHelpers

    def setup
      @controller = TestController.new
      @request = ActionController::TestRequest.new
      @response = ActionController::TestResponse.new
    end

    def test_cacheable_flash_action
      get :index
      asset_equal "In index", flash_cookie["notice"]
    end
  end

Rspec Example

  require "cacheable_flash/test_helpers"

  class TestController < ActionController::Base
    def index
      flash["notice"] = "In index"
    end
  end

  describe TestController, "#index" do
    include CacheableFlash::TestHelpers

    it "writes to the flash cookie" do
      get :index
      flash_cookie["notice"].should == "In index"
    end
  end

Pivotal Labs

http://www.pivotalblabs.com/articles/2007/08/08/cacheable-flash

http://pivotalrb.rubyforge.org/svn/cacheable_flash/trunk/

Rails' (MIT)

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Misc. Enhancements

Tags

Comments

Add a comment

Search Plugins

Query syntax

Plugins by Category

Sponsors

Rails Kits: Get Code. Get Moving.

Have a comment?