How to load a gem's .rb files AFTER Rails is loaded


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:


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,


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”



Rob Biedenharn

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


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

I found it thanks to

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