c'è un modo per modificare il file yml herokus
-
22-07-2019 - |
Domanda
Ho installato una connessione remota localmente e devo inviarla a heroku. Quando l'ho spinto su Heroku ho ricevuto un errore che diceva:
RemoteDBName non è configurato.
Suppongo che heroku (anche cercato e visto) usi il proprio file config.yml.
Soluzione
Capito questo, per chiunque si connette a un database remoto su heroku che potrebbe vedere questo:
Heroku sostituisce il tuo file database.yml con il proprio, sovrascrivendo qualsiasi cosa nel tuo.
Per aggirare questo:
- Crea un nuovo file nella tua cartella di configurazione, chiamalo qualunque.yml
- Imposta la stringa di connessione in questo file.
-
Crea un nuovo file nella cartella degli inizializzatori, ho chiamato mio load_remote.rb. In questo file scrivi questa riga di codice:
REMOTE_DB = YAML.load_file (" # {RAILS_ROOT} /config/YOURNEWFILEHERE.yml")
-
Stabilisci la tua connessione in uno dei modelli remoti con questa riga di codice:
Esta_connection Remote_DB ['Qualunque cosa tu abbia chiamato la tua stringa di connessione nel file yml qui']
Altri suggerimenti
Lascia che ti mostri come viene eseguita la configurazione del database quando lavori con Heroku. Penso che questo potrebbe essere un po 'vago nella documentazione, alcune persone si confondono. Consente di utilizzare la console:
zero:~/Projects/crantastic $ heroku console
Ruby console for crantastic.heroku.com
>> puts File.read(Rails.configuration.database_configuration_file)
---
production:
encoding: unicode
adapter: postgresql
username: something_random
port: 5432
host: somewhere.at.heroku
database: something_random
password: something_random
=> nil
>>
Heroku in pratica sostituisce le tue app database.yml quando invii il tuo sito ai loro server. I tuoi dati verranno archiviati in uno dei loro fantasiosi server PostgreSQL, indipendentemente da ciò che usi localmente, ciò significa che non devi assolutamente pensare a database.yml (tranne che per gli scopi di sviluppo, naturalmente). Taps si assicura che tutto sia dn agnostico. Se vuoi trasferire il tuo ultimo db di sviluppo su Heroku, esegui semplicemente heroku db: push