Ich möchte die aktuellen Host- und Datenbanknamen in einer Ansicht anzeigen.Anzeigen von Host- und Datenbanknamen in Rails
Woher bekomme ich diese Namen?
Gibt es einige vordefinierte Umgebung oder globale Variablen?
Ich möchte die aktuellen Host- und Datenbanknamen in einer Ansicht anzeigen.Anzeigen von Host- und Datenbanknamen in Rails
Woher bekomme ich diese Namen?
Gibt es einige vordefinierte Umgebung oder globale Variablen?
Sie können ein Schienen-Konfigurationsobjekt erstellen und die notwendigen Informationen von ihm erhalten:
config = Rails::Configuration.new
host = config.database_configuration[RAILS_ENV]["host"]
database = config.database_configuration[RAILS_ENV]["database"]
die documentation für Rails Siehe :: Configuration für Details.
Die Rails :: configuration.new Antwort funktioniert nicht in Rails 3
config = Rails::Configuration.new
NoMethodError: undefined method `new' for Rails::Configuration:Module
[...]
Wenn Sie mit MySQL oder Postgres dann funktioniert das
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.
ActiveRecord :: Base.connection.current_database funktioniert auch für Postgres, der Treiber ist abstrahiert, so dass es für alle Datenbanken funktioniert – house9
@ house9 Ich habe die Antwort bearbeitet, um dies zu reflektieren, danke! –
On Rails 3 ist dies am einfachsten über Rails::Application.config
zugegriffen, etwa so:
YourApplicationClassName::Application.config.database_configuration[::Rails.env]
Wenn Sie versuchen, es auf Rails
direkt anrufen statt YourApplicationClassName
, Schienen geben Ihnen einen deperecation Warnung. Wenn Sie nicht wissen, was Ihre Anwendungskonstante ist, versuchen Sie Rails.application.class.name
in einer Rails-Konsole für Ihre App.
Diese Lösung funktioniert nicht in Rails 3. –
Dies funktioniert in 3.2 (3.2.14) – yorch
Funktioniert auch in Rails 4. Nicht sicher, worauf Pavel sich bezieht. –
Die folgende Methode ist nett, wenn Sie mit mehreren Datenbanken verbunden sind. Getestet auf Sqlite3 und mysql2
MyModel.connection.instance_variable_get(:@config)[:database]
Funktioniert wie ein Charme! – jackyalcine
Bei Verwendung mehrerer Datenbanken ist dies die Antwort, die Sie benötigen –
Mit Rails 3 können Sie
Rails.configuration.database_configuration[Rails.env]
oder
Rails.application.config.database_configuration[Rails.env]
oder
ActiveRecord::Base.connection_config
Sie haben es für 'ActiveRecord :: Base.connection_config' Ich denke, das ist die sauberste Art und Weise, dies zu tun. – 244an
'ActiveRecord :: Base.configurations' hat zum Finden aller Konfigurationen statt 'ActiveRecord :: Base.connection_config' für die aktuelle Konfiguration gearbeitet. – sbonami
nette, mag ich '' 'ActiveRecord :: Base.connection_config''' –
in Rails-Konsole getestet verwenden:
ActiveRecord::Base.connection.instance_variable_get(:@config)
nächste Info sollte aus sein: Adapter, Host-Codierung, schließen, Datenbankname, Benutzername, geben
Dokumentation Link gebrochen ist. Soll es auf http://guides.rubyonrails.org/configuring.html zeigen? – evanrmurphy
Diese Lösung funktioniert nicht in Rails 3. –