I found a special ActiveRecord case which messes a bit one requirement. I
have two applications sharing the same DB. For this reason we found wise to
share the DB mapping logic among both applications, namely, our
activerecord models. After extracting them into a gem and bundling them
into the two applications, everything went well.
Now, we found out it would also be wise to share the migrations, schema,
config, etc., maybe "delegate" such rake tasks as create migration and
schema dump to that shared repo, which would contain also this part of the
logic. Thing is, the use of the Rails class throughout all the rake tasks
concerning migrations make that impossible. Specially the load_config rake
task, which is apparently run before each and every rake task. This one
basically overwrites any rewrite I might have had done on the
ActiveRecord::Migrator.migration_paths with the local 'db/migrate' folder.
Which in my case would be empty in both application trees and full on the
shared repo. Because of that, I can't wisely set a new migration path
without entering a world of hurt and non-stop monkey patch. Which I'll
avoid by now. But basically, that load_config rake_task is messing up my
Another concern is the use of the Rails class itself. It could be the case
that I would be talking about two rails applications, but one of them
happens to be Sinatra, which doesn't own (or shouldn't own) any Rails
class. I've seen how they extended the migrations part for their version of
active record. Also a very limiting solution. So, I guess the solution will
probably not come from the frameworks readapting their needs to
activerecord, but activerecord having a consistent solution in its box,
making it then more extendable for other frameworks (I don't know how Merb
handles this, I might investigate into that).
So, I'd like to open the debate on the subject. Or maybe it has been opened
previously. I'd much like to hear your opinion.