Forum: Rails Engines development cache sweepers not working since last upgrade

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
733b5983d61a6f9c0c7ba59834fdf90f?d=identicon&s=25 Martin Scheffler (Guest)
on 2006-04-10 11:42
Hi all,
I updated Rails to 1.1.1 and engines to 1.1.1.
Since then, my cache sweepers stopped working.
I get this error:
You have a nil object when you didn't expect it!
The error occured while evaluating nil.controller_name

See end of post for full error trace.

When I move the controller from vendor/plugins/myengine/app/controllers
to app/controllers, everything works fine, so I guess it's an engine
bug.



Controller:

class TestController < ApplicationController

  layout false
  helper :admin_pages
  model :page_element, :element_sweeper
  cache_sweeper :element_sweeper
  def test

  render :inline=>"blaa"
  end
end

Sweeper:

 class ElementSweeper < ActionController::Caching::Sweeper
  observe PageElement
end



Errors:

NoMethodError (You have a nil object when you didn't expect it!
The error occured while evaluating nil.controller_name):
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/caching.rb:541:in
`callback'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/caching.rb:534:in
`after'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/filters.rb:227:in
`around_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/filters.rb:227:in
`call'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/filters.rb:401:in
`call_filters'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/filters.rb:394:in
`each'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/filters.rb:394:in
`call_filters'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/filters.rb:389:in
`after_action'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/filters.rb:369:in
`perform_action_without_benchmark'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/benchmarking.rb:69:in
`perform_action_without_rescue'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/benchmarking.rb:69:in
`measure'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/benchmarking.rb:69:in
`perform_action_without_rescue'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/rescue.rb:82:in
`perform_action'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/base.rb:381:in
`send'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/base.rb:381:in
`process_without_filters'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/filters.rb:377:in
`process_without_session_management_support'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/session_management.rb:117:in
`process'
    /usr/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/dispatcher.rb:38:in
`dispatch'
    /usr/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/webrick_server.rb:115:in
`handle_dispatch'
    /usr/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/webrick_server.rb:81:in
`service'
    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
    /usr/lib/ruby/1.8/webrick/server.rb:155:in `start_thread'
    /usr/lib/ruby/1.8/webrick/server.rb:144:in `start'
    /usr/lib/ruby/1.8/webrick/server.rb:144:in `start_thread'
    /usr/lib/ruby/1.8/webrick/server.rb:94:in `start'
    /usr/lib/ruby/1.8/webrick/server.rb:89:in `each'
    /usr/lib/ruby/1.8/webrick/server.rb:89:in `start'
    /usr/lib/ruby/1.8/webrick/server.rb:79:in `start'
    /usr/lib/ruby/1.8/webrick/server.rb:79:in `start'
    /usr/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/webrick_server.rb:67:in
`dispatch'
    /usr/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/commands/servers/webrick.rb:59
    /usr/lib/ruby/1.8/rubygems/custom_require.rb:21:in `require__'
    /usr/lib/ruby/1.8/rubygems/custom_require.rb:21:in `require'
    /usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:147:in
`require'
    /usr/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/commands/server.rb:30
    /usr/lib/ruby/1.8/rubygems/custom_require.rb:21:in `require__'
    /usr/lib/ruby/1.8/rubygems/custom_require.rb:21:in `require'
    /usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:147:in
`require'
    script/server:3
Bb46488d2c90d51f366cafc776e2b3ad?d=identicon&s=25 Jeff Lindsay (progrium)
on 2006-04-11 00:36
(Received via mailing list)
Yeah, I noticed this too. I think it has to do with Rails rather than
Engines... might even be a bug. I noticed in the changelog that the
controller instance variable inside sweepers is set to nil "between
requests"... whatever that means. I figure that's what's causing the
error, but I haven't figured out how to fix it or even looked into
whether its a reported bug. I just have my sweepers turned off for
now. : (

Let me know if you learn anything about this.

On 4/10/06, Martin Scheffler <wooyay@web.de> wrote:
> to app/controllers, everything works fine, so I guess it's an engine
>   model :page_element, :element_sweeper
>   observe PageElement
> 
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/caching.rb:534:in
> `call_filters'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/rescue.rb:82:in
> `dispatch'
>     /usr/lib/ruby/1.8/webrick/server.rb:89:in `each'
>     /usr/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/commands/server.rb:30
> _______________________________________________
> engine-developers mailing list
> engine-developers@lists.rails-engines.org
> http://lists.rails-engines.org/listinfo.cgi/engine...
>


--
Jeff Lindsay
http://blogrium.com/
5588b5f7edd1005fae11268a58f89006?d=identicon&s=25 sclaret (Guest)
on 2006-04-11 00:47
I got this with my app that doesn't use engines at all:

You have a nil object when you didn't expect it!
The error occured while evaluating nil.controller_name

I think it has to do with using external libraries, because it seems to
be caused by this... @status_options =
YAML::load(Settings.status_options)

I'm pretty sure this is related to your problem.  Interestingly, things
work normally for me when I set config.action_controller.perform_caching
= false in production.rb.  Does it do that for you guys too?

Simon.
Bb46488d2c90d51f366cafc776e2b3ad?d=identicon&s=25 Jeff Lindsay (progrium)
on 2006-04-11 00:54
(Received via mailing list)
I don't know about external libraries, but setting perform_caching to
false should be expected to avoid the problem... if you're not
performing caching, sweepers don't need to run, which is where the
problem is.

On 4/10/06, sclaret <scalret@triumf.ca> wrote:
> work normally for me when I set config.action_controller.perform_caching
>
--
Jeff Lindsay
http://blogrium.com/
733b5983d61a6f9c0c7ba59834fdf90f?d=identicon&s=25 Martin Scheffler (Guest)
on 2006-04-13 22:34
Jeff Lindsay wrote:
> I don't know about external libraries, but setting perform_caching to
> false should be expected to avoid the problem... if you're not
> performing caching, sweepers don't need to run, which is where the
> problem is.
>
> On 4/10/06, sclaret <scalret@triumf.ca> wrote:
>> work normally for me when I set config.action_controller.perform_caching
>>
> --
> Jeff Lindsay
> http://blogrium.com/

actually the sweepers work when I call them from norman (non-engine)
controllers, so the error must be on the engine side
This topic is locked and can not be replied to.