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

629 Aufrufe
Direkt zur ersten ungelesenen Nachricht

Dave Rothlisberger

ungelesen,
15.09.2008, 17:12:4215.09.08
an Ruby on Rails: Core
Hi all, I'm posting this in the hope that someone who understands
rails dependencies can shed some light.

I've implemented a "ModelSecurity" module in the vein of Bruce Peren's
old ModelSecurity plugin (http://rubyforge.org/projects/model-
security/ ).

My ModelSecurity module lives in $RAILS_ROOT/lib. It is automatically
included into ActiveRecord::Base by a file in config/initializers. BTW
this is on rails 2.1 stable.

Everything works fine and dandy (including mongrel in development
mode) EXCEPT when I do "reload!" inside script/console -- then I get
the following error the next time any of my ModelSecurity methods are
called:

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

I have tried adding an "unloadable" declaration to my ModelSecurity
model, but it makes no difference.

I also tried adding the "unloadable" declaration to ActiveRecord::Base
itself (I was grasping at straws there), but that doesn't work either
-- it causes "reload!" to fail with:
NameError: uninitialized constant ActiveRecord::Base

Admittedly this isn't a huge problem (it only affects script/console)
but it is annoying because quitting and re-running script/console
takes ~12s on my system.

Cheers
Dave.

Frederick Cheung

ungelesen,
15.09.2008, 18:03:1915.09.08
an rubyonra...@googlegroups.com

On 15 Sep 2008, at 22:12, Dave Rothlisberger wrote:

>
> Hi all, I'm posting this in the hope that someone who understands
> rails dependencies can shed some light.
>
> I've implemented a "ModelSecurity" module in the vein of Bruce Peren's
> old ModelSecurity plugin (http://rubyforge.org/projects/model-
> security/ ).
>
> My ModelSecurity module lives in $RAILS_ROOT/lib. It is automatically
> included into ActiveRecord::Base by a file in config/initializers. BTW
> this is on rails 2.1 stable.
>

Add that file to Dependencies.load_once_paths ?

Fred

Michael Koziarski

ungelesen,
16.09.2008, 05:00:5816.09.08
an rubyonra...@googlegroups.com
> Hi all, I'm posting this in the hope that someone who understands
> rails dependencies can shed some light.

Basically the problem is that it's trying to remove that module, but
ActiveRecord::Base still references it. So your module has to live
outside of the reloading paths. Either in a plugin or some other path
you manually add to load_once_paths (as frederick mentioned).

If you want to reload this module you can simulate it with just:

load 'model_security.rb'

It's not strictly the same, but it will have the desired result for you.

--
Cheers

Koz

Dave Rothlisberger

ungelesen,
16.09.2008, 09:36:4216.09.08
an Ruby on Rails: Core
Thanks guys, that worked a treat. It's nice to understand what's going
on under the hood. :-)

Dave.
Allen antworten
Antwort an Autor
Weiterleiten
0 neue Nachrichten