Thanks Rob. That almost fixed it. Solution is this:

1. Create a file called rails/init.rb
2. Put this in it:

config.after_initialize do
  ActiveRecord::Base.observers << Authorizer::UserObserver
  ActiveRecord::Base.observers << Authorizer::ObjectObserver
end

No more need for the user to mess with config/environment.rb.

I found it thanks to
http://riotprojects.com/post/106808946/activerecord-observers-in-gems-plugins

It also works fine in development mode. Because of the post from Riotproject
I was expecting trouble, but this hasn't occurred.

On Sat, Jul 2, 2011 at 3:55 PM, Rob Biedenharn
<[email protected]>wrote:

>
> On Jul 2, 2011, at 5:17 AM, Commander Johnson wrote:
>
> Hey,
>
> I have a gem called 'authorizer' which does authorization for me. It has
> two observer classes that need to be added to the list of ActiveRecord
> observers:
>
> config/environment.rb:
>
> require "authorizer/user_observer"
> require "authorizer/object_observer"
>
> config.active_record.observers = "Authorizer::UserObserver",
> "Authorizer::ObjectObserver"
>
> This gives me the error:
>
> `load_missing_constant': uninitialized constant Authorizer::ActiveRecord
> (NameError)
>
> This problem is solved by copying the gem's source files into the lib/
> folder or by using a plugin. But I don't want that. How can I ensure the gem
> is loaded AFTER the Rails framework is loaded?
>
> This is on Rails 2.3.11
>
> All the best,
> CmdJohnson
>
>
> I'm not sure if this works when you have to reference the 'config' object,
> but you can wrap code inside a block and use the #after_initialize method:
>
> config.after_initialize do
>   config.active_record.observers = "Authorizer::UserObserver",
> "Authorizer::ObjectObserver"
> end
>
> -Rob
>
> Rob Biedenharn
> [email protected] http://AgileConsultingLLC.com/
> [email protected] <[email protected]>
> http://GaslightSoftware.com/
>
>  --
> 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.
>

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