2009-04-15 9 views
1

Je souhaite exécuter deux sites Web de rails (page d'accueil et application) sur la même base de données. Cependant, les migrations ne fonctionnent pas car les deux sites tentent d'utiliser la table schema_migrations en même temps.sites à plusieurs rails pointant vers la même base de données

Est-il possible de remplacer le nom de table schema_migrations par défaut? D'autres idées comment résoudre ce problème?

Répondre

1

Le nom de la table de schema_migrations est conservé dans ActiveRecord::Migrator.schema_migrations_table_name, que vous pourriez me capable de passer outre (en environment.rb, initializers, etc.), mais je n'ai pas essayé. D'un autre côté, si vous utilisez des ID de migration uniques dans les deux applications (par défaut à partir de la version 2.1, je pense), les migrations de deux applications devraient fonctionner avec une seule table schema_migrations.

Voir this screencast pour plus d'informations sur le fonctionnement des migrations dans Rails 2.1 et versions ultérieures.

+0

ActiveRecord :: Migrator.schema_migrations_table_name semble être figé et les rails ne permettent pas de le remplacer. Je vais essayer d'avoir les deux applications à écrire dans les mêmes schema_migrations. Merci pour la réponse de toute façon – Mantas

0

Je ne sais pas quand cela a été ajouté mais Rails 4 semble le supporter maintenant.

De l'Rails documentation

config.active_record.schema_migrations_table_name vous permet de définir une chaîne à utiliser comme nom de la table des migrations de schéma.

Si vous utilisez une version de Rails où cela n'est pas pris en charge, une alternative peut être d'utiliser table_name_prefix. Si vous utilisez cette approche, je m'assurerais que votre version de Rails préfixe les migrations de schéma avec le préfixe nom_table en regardant le code source.

Questions connexes