2015-04-25 7 views
5

Dies ist seltsam. In meinem Rails 4 database.yml Ich habe folgendes:So finden Sie Datenbank-Namen in Schienen Konsole

development: 
    adapter: postgresql 
    encoding: unicode 
    database: inspector_development 
    password: 
    pool: 5 

ich die Produktionsdatenbank von Heroku kopiert und importiert sie mit diesem Formular in meine lokale Kopie von Postgresql

curl -o latest.dump `heroku pgbackups:url --account personal` 
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U sam -d inspector_development latest.dump 

Das Ergebnis zeigte die 88 erwartete Benutzer in PGadmin in der Inspector_Development-Datenbank auf OSX. Aber auch nach dem Neustart der Rails-App zeigt die User-Tabelle immer noch nur einen Benutzer an, nicht die 88, die ich in PGadmin sehe.

Ich habe gegooglet für, wie man bestimmt, was Rails als die Eigenschaften des Datenbanknamens sieht, um festzustellen, wo es diese nicht existenten Aufzeichnungen findet?

Bei genauerer Betrachtung der Benutzertabelle in PGadmin sehe ich Nullspalten. Vielleicht PGAdmin ist falsch? Ich bin nicht in der Lage zu bestimmen, wo die db Rails für so sucht, dass ich dies beheben kann, thx, sam

+2

Versuchen Sie 'rails db' von Ihrem Anwendungsstamm, um zu sehen, zu welcher Datenbank es eine Verbindung herstellt. Es sollte die Postgres-Konsole mit 'inspector_development = #' öffnen, wenn dies Ihre Datenbank für die Entwicklung ist. –

+0

Ich stelle sie normalerweise auf einen anderen Datenbanknamen zurück und weise database.yml darauf hin. Ich hatte bisher keine Probleme mit diesem Ansatz. – fylooi

Antwort

9

Dies funktioniert in Rails 3 und Rails 4

ActiveRecord::Base.connection.current_database 

Das funktioniert aber nur mit Treibern, die haben implementiert diese Methode. Zum Beispiel wird es nicht für SQLite funktionieren, aber es wird mit mysql und postgres funktionieren.