回答:
Rails内から、構成オブジェクトを作成し、そこから必要な情報を取得できます。
config = Rails.configuration.database_configuration
host = config[Rails.env]["host"]
database = config[Rails.env]["database"]
username = config[Rails.env]["username"]
password = config[Rails.env]["password"]
詳細については、Rails :: Configurationのドキュメントを参照してください。
これは、YAML :: loadを使用してデータベース構成ファイル(database.yml
)から構成をロードするだけで、これを使用してRails環境の外部から情報を取得できます。
require 'YAML'
info = YAML::load(IO.read("database.yml"))
print info["production"]["host"]
print info["production"]["database"]
...
̶R̶a̶i̶l̶s̶.̶c̶o̶n̶f̶i̶g̶u̶r̶a̶t̶i̶o̶n̶
̶次に何をすることで異なるからTHE ANSWER?̶おそらくその答えは、元から編集されました。@KenBの回答が表示されます。
上記のコメントでのブライアンの回答は、もう少し詳しく説明する価値があります。
>> Rails.configuration.database_configuration[Rails.env]
=> {"encoding"=>"unicode", "username"=>"postgres", "adapter"=>"postgresql", "port"=>5432, "host"=>"localhost", "password"=>"postgres", "database"=>"mydb", "pool"=>5}
ActiveRecord::Base.connection_config
接続構成をハッシュで返します。
=> {:adapter=>ADAPTER_NAME, :host=>HOST, :port=>PORT,
:database=>DB, :pool=>POOL, :username=>USERNAME,
:password=>PASSWORD}
tpett
彼らのコメントで述べ:このソリューションは、から設定をマージするためのアカウントdatabase.yml
や環境変数からDATABASE_URL
。
database.yml
構成とDATABASE_URL
環境変数のマージを説明する唯一の方法のようです。
古い質問ですが、これは、これを行う方法を探す上での最初の目的の1つでした。通常、ホームディレクトリには.my.cnfファイルがあります。したがって、私のデータベース.yml構成ファイルで 'parseconfig' gemといくつかのERB構文を使用することは、ソース管理へのチェックインと、(私の場合は)展開の簡素化に満足できる動的ファイルを持っていることを意味します。また、一般的なソケットのリストにも注意してください。これにより、Unixソケットパスが異なる可能性のある異なるオペレーティングシステムにアプリを簡単に移動できます。
<%
require 'parseconfig'
c=ParseConfig.new('../../.my.cnf') %>
mysqlevn: &mysql
adapter: mysql
username: <%= c.params['client']['user'] %>
password: <%= c.params['client']['password'] %>
host: localhost
socket: <%= [
'/var/run/mysqld/mysqld.sock',
'/var/lib/mysql/mysql.sock',
'/tmp/mysqld.sock',
'/tmp/mysql.sock'].detect { |socket| File.exist?(socket) } %>
production:
database: app_production
<<: *mysql
development:
database: app_development
<<: *mysql
# Do not set this db to the same as development or production.
test:
database: app_test
<<: *mysql
ref:http : //effectif.com/articles/database-yml-should-be-checked-in
Rails.configuration