y at-il un moyen de modifier le fichier herokus yml
-
22-07-2019 - |
Question
Je configure une connexion à distance localement et je dois la transmettre à heroku. Lorsque je l'ai poussée à Heroku, j'ai eu une erreur en disant:
RemoteDBName n'est pas configuré.
Je suppose simplement (également recherché et vu) que heroku utilise son propre fichier config.yml.
La solution
Vous avez découvert ceci, pour toute personne se connectant à une base de données distante sur heroku et susceptible de voir ceci:
Heroku remplace votre fichier database.yml par le leur, écrasant ainsi tout ce qui se trouve dans le vôtre.
Pour contourner ce problème:
- Créez un nouveau fichier dans votre dossier de configuration, nommez-le ce que vous voulez.yml
- Configurez la chaîne de connexion dans ce fichier.
-
Créez un nouveau fichier dans votre dossier initialiseurs, j’ai appelé le mien load_remote.rb. Dans ce fichier, écrivez cette ligne de code:
REMOTE_DB = YAML.load_file ("# {RAILS_ROOT} /config/YOURNEWFILEHERE.yml")
-
Établissez votre connexion dans l'un des modèles distants avec cette ligne de code:
Establishment_connection Remote_DB ['Tout ce que vous avez appelé votre chaîne de connexion dans le fichier yml ici']
Autres conseils
Laissez-moi vous montrer comment la configuration de la base de données est effectuée lorsque vous travaillez avec Heroku. Je pense que cela pourrait être un peu vague dans la documentation, certaines personnes sont confuses à ce sujet. Permet d’utiliser 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
>>
En pratique, Heroku remplace le fichier database.yml de votre application lorsque vous poussez votre site vers leurs serveurs. Vos données seront stockées dans l’un de leurs serveurs PostgreSQL les plus sophistiqués, peu importe ce que vous utiliserez localement - cela signifie que vous n’aurez pas à vous soucier de database.yml (sauf pour des raisons de développement, bien entendu). Taps s'assure que tout est db agnostique. Si vous souhaitez transmettre votre dernière base de développement à Heroku, exécutez simplement heroku db: push