2011-09-12 1 views
0

J'écris un multi-tenancy gem for railscommutation adaptateurs dans les rails et sql générés

Mes tests d'établir des connexions en ce moment pour un adaptateur particulier, faire quelques tests, puis répétez l'opération pour les cartes suivantes db.

Mon problème est cependant que quand je l'appelle:

ActiveRecord::Base.establish_connection 

avec un autre adaptateur, le SQL généré à partir, il est encore sous la forme de l'ancien adaptateur. Par exemple, j'exécute les tests mysql, puis j'essaie d'exécuter des tests postgresql. Je reçois une erreur:

Failure/Error: subject.create(database1) 
ActiveRecord::StatementInvalid: 
    PGError: ERROR: syntax error at or near "." 
    LINE 1: SELECT `users`.* FROM `users` WHERE `users`.`name` = 'Some ... 
         ^
    : SELECT `users`.* FROM `users` WHERE `users`.`name` = 'Some User 0' LIMIT 1 

Et il est évident ici que cela en utilisant la syntaxe de barre oblique inverse mysql, ce qui est valable dans postgresql. Donc, est-ce que quelqu'un sait comment établir correctement une connexion avec un autre adaptateur? J'ai essayé:

ActiveRecord::Base.connection.reconnect! 
ActiveRecord::Base.clear_all_connections! 

Aucun de ces a fixé mes tests. Toute aide est grandement appréciée.

Répondre

0

Voir si cela aide

ActiveRecord::Base.send(:subclasses).each do |model| 
    model.connection.clear_query_cache 
    end 
+0

oh bien ... il tourne c'est fixé dans Rails 3.2 de toute façon. Je suppose que je devrais prendre note de cela. Si j'ai la chance (ou l'inclination) je pourrais essayer ceci sur ma branche 3.0.x de rails, mais pas sûr quand je pourrais y arriver. – brad

Questions connexes