[Mongrel] Caching::Sweeper Access to Controller

Erik Morton eimorton at gmail.com
Thu Sep 14 20:52:12 EDT 2006


Hello,
I'm running Mongrel 0.3.13.3, cluster 0.2.0, and Rails 1.1.6 and I  
have a problem with a sweeper not having access to the controller  
instance.

NoMethodError (undefined method `session' for nil:NilClass):
     /app/models/audit_sweeper.rb:16:in `log'
     /app/models/audit_sweeper.rb:9:in `after_update'
     /usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/ 
active_record/observer.rb:123:in `send'
     /usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/ 
active_record/observer.rb:123:in `update'
     /usr/lib/ruby/1.8/observer.rb:185:in `notify_observers'
     /usr/lib/ruby/1.8/observer.rb:184:in `each'
     /usr/lib/ruby/1.8/observer.rb:184:in `notify_observers'

Here's my code (the problem is with 'controller' being nil):
def log(record, event, user = controller.session[:user])
     a = AuditTrail.new(:record_id => record.id, :record_type =>  
record.type.name,
                       :event => event, :user_id => user)
     a.record_version = record.version if record.respond_to?("version")
     a.save!
end

The interesting thing is that it only happens on actions within one  
of the controllers that are calling the cache sweeper  
(cache_sweeper :audit_sweeper).

Any help or pointers would be much appreciated.

Erik


More information about the Mongrel-users mailing list