Hey guys,

I have a module Foo::Bar, which extends ActiveRecord::Base with some
custom functionality. This module is in lib/foo/bar.rb. Inside this
file is also the code, that includes the module into
ActiveRecord::Base:

    module Foo
      module Bar
        # stuff ...
      end
    end

    ActiveRecord::Base.send(:include, Foo::Bar)

Then, this file is required in config/initializers/foo.rb:

    require 'foo/bar'

The problem is, that sometimes i get this nasty error:

    A copy of Foo::Bar has been removed from the module tree but is
still active!

and I really can't figure out what's the problem. The weird thing is
that the error disappears when I restart the application, but
sometimes appears again on a different page. It looks completely
magical to me :)

Everything works fine in test and production environments, so this has
probably something to do with the Rails dependency loading/unloading
magic.

So, I guess I can make it into a plugin, but it's really very simple
and quite specific to my application, so it's not worth the effort.
That's why I want to keep it only in lib.

Things I tried:

- Putting the lib/foo path into config.load_once_paths in config/
environment.rb
- adding unloadable to the Foo::Base module
- moving the include line (ActiveRecord::Base.send(:include, ...) into
config/initializers/foo.rb

But nothing helps :(

Any help will be appreciated. Thanks.

adam.

-- 
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