Frage

Wie kann ich die Datenbankverbindungsinformationen in tnsnames.ora verwenden, wenn ich mich mit Rails verbinde?

Ich habe versucht, die festzulegen database: oder der host: Felder in der Datenbank.yml zum SID, aber auch nicht funktioniert.

Ich habe überprüft, dass SQLPLUS eine Verbindung zur Datenbank herstellen kann, sodass die tnsnames.ora korrekt ist.

Ich verwende DataMapper auf Rails 3, wenn das überhaupt hilft.

War es hilfreich?

Lösung

Ich denke, wir haben vor ein paar Tagen in #Datamapper gesprochen. SQLPLUS ist ein Stück Oracle -Software, das mit dem, was ich vermute, ihr Loadbalancing -System betrifft.

DataMapper geht davon aus, dass zwischen einem Repository und einem Datenspeicher eine 1 bis 1 -Zuordnung besteht. Normalerweise bedeutet dies, dass Sie davon ausgehen, dass das Lastausgleich behandelt wird (z. B. MySQL oder Postgres Clustering).

Es gibt jedoch nichts, was jemanden daran hindert, eine Bibliothek zu schreiben, mit der DataMapper -Hot -Tausch zwischen einer Gruppe von Repositories getauscht werden kann, wenn es möglich wäre, die Last auf jedem der mit jedem Repository verknüpften Datenspeicher zu lesen (dh Ihre eigene kleine Last schreiben Router ausbalancieren).

Das Unternehmen, für das ich arbeite, verwendet DataMapper -Repositories genau in dieser Art und Weise (für die Trennbarkeit von Aufzeichnungen und nicht für den Lastausgleich).

Es ist so einfach wie:

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

Andere Tipps

Nach ein paar Stunden Aufhebens damit habe ich die Antwort entdeckt, um zu sein:

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

Ich verwende Rails 3.2.1, DM 1.2.0 auf Win7, wobei sowohl 32-Bit- als auch 64-Bit-reguläre Oracle-Clients installiert sind.

Eine sehr wichtige Sache, die ich auf dem Weg entdeckt habe: Sie müssen den Rails Dev Server zwischen jedem Mod von Database.yml neu starten, um die Änderungen zu erfassen. Ich habe viel Zeit verschwendet, ohne das zu wissen. Aus irgendeinem Grund hat das DataMapper -Setup Änderungen hier nicht wie normal mit dem Dev -Server aufgenommen.

Geschichte:

Mir wurde gesagt, die Antwort sei dies (von einem anderen Entwickler eines anderen Unternehmens, der Jruby unter Windows verwendet):

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

Das funktionierte nicht für mich und ich vermutete, dass die Antwort einen Dickdarm verwenden sollte (basierend auf DataMapper.setup Syntax):

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

Dies funktionierte auch nicht, also habe ich manuelle Verbindungen in der IRM getestet und die Antwort von untersucht DataMapper.setup. Es bringt den SID hinein host und zeigt nicht an database Also habe ich dasselbe in Database.yml ausprobiert. Es funktionierte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top