Hi
I’m working on a program which relies on heavy cache sweeper usage.
I’ve just bumped onto an odd problem. When using render_component
method in layouts or templates with cache sweeping turned on, Rails
throws an exception with the following message:
NoMethodError in TestController#index
You have a nil object when you didn’t expect it!
The error occured while evaluating nil.controller_name
where TestController is obviously my controller class name. I’m running
Rails 1.1.6 on linux box. My test app which extracts the error consists
of a controller which body is only:
require ‘sweeper’
class TestController < ApplicationController
cache_sweeper :sweeper
def index
end
def foo
render :text => “foo”
end
end
The file sweeper.rb contains my sweeper class definition:
class Sweeper < ActionController::Caching::Sweeper
observe Bar
end
Bar is an empty model, with a table bars containing only id field.
I’ve turned the caching on by setting
config.action_controller.perform_caching = true in
config/development/environment.rb file.
Exception is thrown in
actionpack-1.12.5/lib/action_controller/caching.rb file in line 541.
Am I doing something wrong or it’s some kind of a Rails bug?