Hey Frederick. Thanks for the tip. That makes sense. It turns out that
I didn't completely solve the problem of the plugin reloading, and I
think what you described is the culprit.

For some reason, ActsAsDashboard::ClassMethods is not being reloaded
for each request.

I tried your suggestion of changing the plugin's init.rb from this:
    require 'acts_as_dashboard'
    ActionController::Base.send :include, ActsAsDashboard
to this:
    require 'acts_as_dashboard'
    ApplicationController.send :include, ActsAsDashboard

However, every request other than the first results in this error:
    "undefined local variable or method `acts_as_dashboard' for
DashboardsController:Class"
citing line 2 of app/controllers/dashboards_controller.rb :
    1 class DashboardsController < ApplicationController
    2   acts_as_dashboard

Might you know what needs to be done to get Rails to reload
ActsAsDashboard::ClassMethods for each request?

Thanks, mate!
Nick

On Apr 10, 2:32 pm, Frederick Cheung <[email protected]>
wrote:
> On Apr 10, 4:38 pm, Nick <[email protected]> wrote:
>
>
>
> > On Apr 10, 11:06 am, "[email protected]" <[email protected]> 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

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to