Trouble with controller caching

Hi All!

I have an application with a frontend and admin backend. In both
sections there are controllers with the same name (e.g.
CampaignsController and Admin::CampaignsController). The front and
backend controllers have seperate authentification methods (for users
and admins). When a admin browses to admin -> campaigns they are
redirected to the frontend login screen as if they had browsed to the
frontend campaigns controller. The problem is solved when product.rb -

config.cache_classes is set to false OR when all the admin

controller names are prefixed with 'Admin' (e.g.
Admin::AdminCampaign). Is there any other way I can get around this?
has anyone else experienced this problem?

Many Thanks,

Did you try this in edge rails ?

Thanks for the quick replies.

I thought before I tried edge rails that I would replicate the problem
locally. So I've run the app using the production env and using
mongrel instead of webrick, all the versions are the same yet the
problem doesn't appear. Any ideas?


I'm also seeing this in my mongrel logs on the server:

active_support/inflector.rb:250: warning: toplevel constant
CampaignsController referenced by Admin::CampaignsController

Any ideas?


Pastie your code

Peter & all,

Was a solution ever found for this? I'm running on Edge Rails (2.0 RC
1) and I'm encountering the same thing, only in production, and only

When mongrel has been running for "a while" I start to run into this
same problem, where I have EventsController and
Worker::EventsController. The latter doesn't require authorization,
but links to /worker/events start directing to /events, which in turn
leads to a filter chain halt due to a lack of authorization.

Even more oddly, if I access /worker/events/, I'm redirected properly
to Worker::EventsController, but if I leave off the trailing /, I get
bounced out.

I'm seeing the following in my Mongrel Logs:

257: warning: toplevel constant EventsController referenced by

Any thoughts would be appreciated!

- Jared

I've had the same happen to me; you've hit it on the head exactly with
the "a while" type behavior. Its really perplexing, and I can't think
of what might be going on.

The trailing slash thing doesn't work for me either. I guess I can try
the stuff mentioned earlier, but just wanted to at least chime in with
a "yeah happens to me too" and hope we can figure this out...



While it's not an answer, my best workaround was to move away from
controllers that would have namespace conflicts, so my
Worker::EventsController is now Worker::JobsController.

I suspect the problem comes from having the controllers in different
'levels' of namespace... EventsController was at the root, and
Worker::EventsController was in a namespace. The problem seemed to
come from the latter 'losing' it's namespace. Where, if I had them
each in a namespace, I suspect I wouldn't see the problem. So, maybe
there's something in Rails routing or in mongrel that's asking for
controller_name and not getting the module prepended on it?

Continuing my own thought, a quick look at the controller_path() class
method in Rails 2.0 RC1 reveals this:

in action_pack/lib/action_controller/base.rb:

class <<self
  def controller_path
    @controller_path ||= name.gsub(/Controller$/, '').underscore

I wonder if there's a caching issue where that @controller_path ||= is

Did anybody learn anything new about this issue? I'm still having
issues with Rails 2.0.2 and I'm kind of lost on what the cause is.

Thijs Cadier wrote:

Did anybody learn anything new about this issue? I'm still having
issues with Rails 2.0.2 and I'm kind of lost on what the cause is.

On Dec 9 2007, 8:33 pm, James Herdman <rails-mailing-l...@andreas-

I'm also getting this problem with Rails 2.0.2. I've noticed that I can
make the problem go away by turning off cache_classes in the

config.cache_classes = false

With it on My controllers Admin::PageController & PageController often
get muddled causing all my tests to explode :frowning:

I guess that leans further towards this being an issue of caching and
not respecting namespaces...

This link was helpful for me:

Do you also have a model with the same name as your namespace? I did.
Seems like this should have been fixed by rails 2.0.2, but it looks like
it's happening again