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.

Était-ce utile?

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

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