Domanda

Come posso utilizzare le informazioni di connessione al database in tnsnames.ora quando si collega con Rails?

Ho provato a fissare la database: oi campi host: nel database.yml al SID, ma nessuno dei due ha funzionato.

I verificato che sqlplus può connettersi al database, in modo che il tnsnames.ora è corretta.

Sto usando DataMapper on Rails 3 se questo aiuta a tutti.

È stato utile?

Soluzione

Credo che abbiamo parlato in #datamapper un paio di giorni fa. Sqlplus è un pezzo di software Oracle che si interfaccia con quello che presumo è il loro sistema loadbalancing.

DataMapper presuppone che vi sia un 1 a 1 mappatura tra un repository e un archivio dati. In genere questo significa che si assume che il bilanciamento del carico viene gestito datastore lato (mysql dire o Postgres di clustering).

Tuttavia, non v'è nulla impedisce a qualcuno di scrivere una libreria che avrebbe permesso DataMapper sostituzione a caldo tra un gruppo di repository, se fosse possibile ottenere una lettura del carico su ognuno dei datastore associati ad ogni repository (cioè scrivere i tuoi proprio piccolo carico router di bilanciamento).

L'opera I per usi DataMapper repository esattamente in questo modo (per separabilità di dischi, piuttosto che per il bilanciamento del carico).

è semplice come:

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

Altri suggerimenti

Dopo alcune ore di armeggiare con questo me stesso ho scoperto la risposta di essere:

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

sto usando Rails 3.2.1, 1.2.0 DM su Win7 sia a 32-bit e 64-bit clienti regolari di Oracle installati.

Una cosa molto importante che ho scoperto lungo il percorso:. È necessario riavviare il server di rotaie dev tra ogni mod di database.yml per raccogliere le modifiche Ho sprecato un sacco di tempo non sapere questo. Per qualche motivo l'installazione DataMapper non stava raccogliendo le modifiche qui, come è normale con il server dev.

La storia:

Mi è stato detto che la risposta era questa (da un altro sviluppatore presso un'altra azienda che usa JRuby su Windows):

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

che non ha funzionato per me e ho il sospetto che la risposta era di utilizzare i due punti (in base alla sintassi DataMapper.setup):

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

Questo non ha funzionato sia così ho provato connessioni manuali in IRM e studiato la risposta da DataMapper.setup. Si mette il SID in host e non indica database così ho provato lo stesso in database.yml. Ha funzionato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top