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
On Jul 2, 2011, at 5:17 AM, Commander J. wrote:
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 B.
[email protected] http://AgileConsultingLLC.com/
[email protected] http://GaslightSoftware.com/
Thanks Rob. That almost fixed it. Solution is this:
- Create a file called rails/init.rb
- 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 B.