When using ‘rake db_schema_dump’ Rails will ignore its own schema
version table, so I’m trying to extend it to ignore engines’ as well.
It’s a bit tough though because of the way Rails loads the
SchemaDumper class… I’m still playing with it.
Anyway, if I get it working, shall I supply a patch?
Sidenote: I hate Rails making a table for schema info… so I’m doubly
pained to see engines add another for the same reason. I was thinking
it would be nice of engines just extended the Rails table… I don’t
think Rails cares of there’s extra columns and as long as the app
migration version is the first record, it should keep working.
Thoughts?
I just realized extended the rails version table would solve the
original issue… which is nice because it looks like it might be
impossible to properly extend the SchemaDumper class from a plugin or
the environment the way the rake task loads it.
Perhaps the best solution would be to petition the core to modify the
way this schema_info is created… rather than a single column/single
row table, we could have a key/value pair with which to register
version information.
name varchar(255) default null
version int(11) default null
insert into schema_info (name, version) values (‘application’, 12);
insert into schema_info (name, version) values (‘login_engine’, 1);
insert into schema_info (name, version) values (‘riki_engine’, 3);
Patching the schema dump to ignore the engine_schema_info table was on
my hitlist too, but a patch would be more than welcome, so please do
look into that if you can.
W.r.t. just modifying the existing schema_info table, I considered
that but came to the conclusion that it would be the worse of two
evils; adding version information about individual engines would, as
you say, involve adding new columns each time a new engine is
encountered, which then means that the migration system has to ALTER
tables rather than just adding rows. It also puts the engine schema
information at the mercy of whatever processes are playing with the
schema info table, which could concievably be a bad thing. Perhaps I’m
being overprotective here though… I do try and keep an open mind
though - if you wanted to work up a patch for that too, it would
definitely be worthy of discussion.