Re: Reloading controller plugins on each request

Frederick Cheung
Sat, 10 Apr 2010 18:32:06 -0000

On Apr 10, 4:38 pm, Nick <n...-qGbiljoI0DQkmLvzuZlaBw@public.gmane.org>
wrote:

>
> On Apr 10, 11:06 am,
"kel...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org"
<kel...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > Did you try require_dependency instead of require?
>
> I''ve never heard of require_dependency. I just gave it a try, but
> unfortunately, all requests but the first result in this error:
>
> "A copy of ActsAsDashboard::ClassMethods has been removed from the
> module tree but is still active!"
>
> That behaviour also occurs when I put this in environment.rb:
>
> ActiveSupport::Dependencies.explicitly_unloadable_constants <<
> ''ActsAsDashboard''

Just for your enlightenment, a big part of the problem is that you
were including your module in ActionController::Base. This was
problematic because the rails framework (including
ActionController::Base) doesn''t get reloaded, but you were forcing
Rails to reload your module event though ActionController::Base was
still hanging onto it (you wouldn''t have had this issue if
you''d
included it in ApplicationController. Using require rather than
require_dependency sidesteps Rails'' dependency stuff (which is the
thing that manages code reloading)

Fred