답변:
레일 내에서 구성 오브젝트를 작성하고 필요한 정보를 얻을 수 있습니다.
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
) 에서 구성을로드합니다.이 구성 파일 을 사용하면 레일 환경 외부에서 정보를 얻을 수 있습니다.
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̶
̶ 그 다음에는 요하는 다른의 도움말? ̶은 아마도 대답은 원본과 편집했다. @KenB 답변을 참조하십시오.
위의 의견에 대한 Bryan의 답변은 조금 더 노출 될 가치가 있습니다.
>> 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
.
오래된 질문이지만 이것은 이것을하는 방법을 찾는 첫 번째 중지 중 하나이므로 다른 사람에게 도움이 될 수 있다고 생각합니다. 일반적으로 홈 디렉토리에 .my.cnf 파일이 있습니다. 따라서 내 database.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
참조 : http://effectif.com/articles/database-yml-should-be-checked-in
Rails.configuration