hooking into `to_prepare` in a Railtie *after* the files have been reloaded (in dev)

I’m working on a gem that sets properties on ActiveRecord models (such as table_name) dynamically based on a user config option.

I have an initializer that achieves this. My problem however is that in dev mode, these classes are reloaded, so they don’t maintain these values set.

So I thought I’d use a railtie to hook into the point where these files are reloaded and run my config again on the models. My problem however is that config.to_prepare in the railtie appears to run before the reload! actually takes place. I can prove this with a bit of logging:

module MyMod
  class Railtie < Rails::Railtie

    config.to_prepare do
      Rails.logger.debug("Contact object_id: #{Contact.object_id}")

if I load up my console, I get the first log:

Contact object_id: 2202692040

If I check Contact.object_id it matches up:

Contact.object_id  #=> 2202692040

Then I reload!


Rails logger from my to_prepare logs:

Contact object_id: 2202692040

So it still has the old object_id, but when I check it in the console:

Contact.object_id  #=> 2197355080

Which is the newly loaded class object id.

So how do I get to_prepare to run after the files are reloaded? Using Rails 3.0.10