Not much going on this week on edge Rails. It does seem however that we do have a new Rails core member, Joshua Peek. Also, the new Rails' bug tracker hosted on Lighthouse is ready for use, so be sure to submit your patches and bug reports there.

This week’s report covers changes from 14 Apr 2008 to 20 Apr 2008 (the day the corresponding Rails Envy podcast was recorded).

Conditional caches_page

The caches_page now takes an :if option for specifying when a page can actually be cached via a Proc. You can now do this, for example:

caches_page :index, :if => Proc.new { |c| !c.request.format.json? }

That will only cache your index page if the requested format is not JSON.

Credit goes to Paul Horsfall for this enhancement.

Related changeset: http://github.com/rails/rails/commit/14a40804a29a57ad05ca6bffbe1e5334089593a9

New ActionView::TestCase for testing view helpers

Remember how you can now use specialized TestCase classes for testing controllers and ActionMailer classes? Now you can do the same with your Rails view helpers with the new ActionView::TestCase class.

Here's a quick example:

module PeopleHelper
  def title(text)
    content_tag(:h1, text)
  end

def homepage_path people_path end end

class PeopleHelperTest < ActionView::TestCase def setup ActionController::Routing::Routes.draw do |map| map.people 'people', :controller => 'people', :action => 'index' map.connect ':controller/:action/:id' end end

def test_title assert_equal "<h1>Ruby on Rails</h1>", title("Ruby on Rails") end

def test_homepage_path assert_equal "/people", homepage_path end

Credit goes to Josh Peek for this sweet little enhancement.

ActiveSupport::Cache's mem_cache_store accepts options

Even though Memcache-client was added to ActiveSupport recently, it didn't allow you to specify any configuration options beyond just the IP of the memcached server. Now you can pass along more configuration options like so:

config.action_controller.fragment_cache_store = :mem_cache_store, 'localhost', { :compression => true, :debug => true, :namespace => 'foo' }

This patch is courtesy of Jonathan Weiss.

Related changeset: http://github.com/rails/rails/commit/9e1d506a8cfedef2fdd605e4cbf4bf53651ad214

As always, let me know of any suggestions or how I can improve the Living on the Edge (of Rails) series.