Question

Comment puis-je utiliser les informations de connexion de base de données tnsnames.ora lors de la connexion avec Rails?

J'ai essayé le réglage de la database: ou les champs de host: dans le database.yml au SID, mais ni travaillé.

I a vérifié que sqlplus peut se connecter à la base de données, de sorte que le tnsnames.ora est correcte.

J'utilise DataMapper on Rails 3 si cela aide à tous.

Était-ce utile?

La solution

Je pense que nous avons parlé dans #datamapper il y a quelques jours. Sqlplus est un logiciel Oracle qui interfaces avec ce que je suppose est leur système loadbalancing.

DataMapper suppose qu'il existe une correspondance 1 à 1 entre un dépôt et un magasin de données. Typiquement, cela signifie que l'on suppose que l'équilibrage de la charge est gérée datastore côté (par exemple MySQL ou postgres) de clustering.

Cependant, il n'y a rien qui empêche une personne d'écrire une bibliothèque qui permettrait DataMapper hot swap entre un groupe de dépôts, s'il était possible d'obtenir une lecture de la charge sur chacune des banques de données associées à chaque dépôt (c.-à-écrire votre propre routeur d'équilibrage peu de charge).

La société de travail i pour des utilisations DataMapper des dépôts exactement de cette façon (pour séparabilité des dossiers, plutôt que pour l'équilibrage de charge).

il est aussi simple que:

DataMapper.repository(seed_repository_symbol) { return your_code_block.call }

Autres conseils

Après quelques heures de épiloguer avec moi-même, je découvre que la réponse soit:

# WORKS
development:
  adapter: oracle
  host: devdb
  username: user
  password: pwd

J'utilise Rails 3.2.1, DM 1.2.0 sur Win7 avec 32 bits et 64 bits clients réguliers Oracle installés.

Une chose très importante que j'ai découvert le long du chemin:. Vous devez redémarrer le serveur rails dev entre chaque mod de database.yml pour ramasser les changements J'ai perdu beaucoup de temps à ne pas savoir cela. Pour une raison quelconque la configuration DataMapper ne captait pas des changements ici comme est normal avec le serveur dev.

Histoire:

On m'a dit que la réponse était ce (par un autre développeur dans une autre entreprise qui utilise JRuby sous Windows):

# DID NOT WORK
development:
  adapter: oracle
  database: user/pwd@devdb

Ce n'a pas fonctionné pour moi et je me doutais que la réponse était d'utiliser deux points (basé sur la syntaxe DataMapper.setup):

# DID NOT WORK
development:
  adapter: oracle
  database: user:pwd@devdb

Cela n'a pas fonctionné non plus, donc je l'ai testé des connexions manuelles dans l'IRM et étudié la réponse de DataMapper.setup. Il met le SID dans host et n'indique database donc j'ai essayé la même chose dans database.yml. Il a travaillé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top