2008-11-06 27 views

回答

17

您可以創建一個軌道配置對象,並從中獲得必要的信息:

config = Rails::Configuration.new 
host  = config.database_configuration[RAILS_ENV]["host"] 
database = config.database_configuration[RAILS_ENV]["database"] 

documentation爲Rails ::配置的詳細信息。

+0

文檔鏈接斷開。它應該指向:http://guides.rubyonrails.org/configuring.html? – evanrmurphy 2012-03-21 14:50:28

+3

這種解決方案並不在Rails的3 – 2013-03-28 09:01:16

22

Rails的:: 3

config = Rails::Configuration.new 
NoMethodError: undefined method `new' for Rails::Configuration:Module 
[...] 

如果你正在使用MySQL或Postgres的configuration.new答案並不在Rails的工作,那麼這個作品

ActiveRecord::Base.connection.current_database 

但這僅適用於有司機實施該方法。例如,它不適用於SQLite。

+1

工作的ActiveRecord :: Base.connection.current_database也適用於Postgres的,司機被抽離所以猜測它適用於所有數據庫 – house9 2011-10-13 21:50:15

+1

@ house9我編輯了答案,以反映這一點,謝謝! – 2014-04-22 23:34:10

17

On Rails的3,這是通過Rails::Application.config最容易訪問的,就像這樣:

YourApplicationClassName::Application.config.database_configuration[::Rails.env] 

如果你想直接調用它Rails而不是YourApplicationClassName,軌道會給你一個deperecation警告。如果你不知道你的應用程序常量是什麼,請在你的應用程序的Rails控制檯中嘗試Rails.application.class.name。當您連接到多個數據庫

+0

此解決方案不工作在導軌3 – 2013-03-28 09:01:31

6

下面的方法是很好的。在SQLITE3和Mysql2

測試
MyModel.connection.instance_variable_get(:@config)[:database] 
38

使用Rails 3,您可以使用

Rails.configuration.database_configuration[Rails.env] 

Rails.application.config.database_configuration[Rails.env] 

ActiveRecord::Base.connection_config 
5

測試在Rails的控制檯:

ActiveRecord::Base.connection.instance_variable_get(:@config) 

下一個信息應該出: 適配器,主機,編碼,重新連接,數據庫名稱,用戶名,通過

相關問題