2016-07-21 3 views
1

내 컴퓨터에서 여러 버전의 PostgreSQL을 실행하고 있습니다 (Ubuntu Trusty 실행).ActiveRecord 설정에서 Postgres 버전 지정

$ service postgresql status 
9.1/main (port 5433): online 
9.5/main (port 5432): online 

내가 실행하고 여러 루비는 각 포스트 그레스의 다른 버전을 사용하는 액티브와 애플 리케이션, 나는, database.yml이 같은 Postgres의 버전을 지정할 수 있도록하려면 :

default: &default 
    adapter: postgresql 
    encoding: utf8 
    version: 9.1 
    # ... or, since this seems to be close to pg_wrapper's syntax: 
    cluster: 9.1/main 

을 내가 이 아니라면port: 5433으로 지정해야합니다. 실행되는 각 컴퓨터의 각 버전마다 다를 수 있기 때문입니다. 이것을 할 수있는 방법이 있습니까?

+0

왜 데이터베이스 연결 정보를 버전 관리에 보관해야합니까? IMO'. gitignore'를 사용하고 모든 사람들이 자신의 세부 사항을 채우거나 환경에'DATABASE_URL'을 설정하게하십시오. –

+0

네, 대단해서 모든 세부 사항을 올바르게 얻으려고 확신합니다. – PJSCopeland

+0

그들은 아마 자신의 기계가 더 잘 알고있을 것입니다. 내가 아는 한이 클러스터는 데비안에 한정적이다. 모든 사람이 데비안 (또는 우분투와 같은 파생물)에있을 것으로 기대합니까? 또한'pg_wrapper'는 Rails가 사용하지 않는 유틸리티에만 영향을줍니다 (SQL의 스키마에 대해서는'pg_dump'를 제외하고). –

답변

1

당신은 ERB의 비트를 사용하여 database.yml에 환경 변수를 넣을 수 있습니다 :

default: &default 
    adapter: postgresql 
    encoding: utf8 
    port: <%= ENV['POSTGRESQL_91_PORT'] %> 

그런 식으로 당신의 database.yml 파일이 여러 컴퓨터에서 동일하고 당신은 그냥 기계 고유의 환경 설정을 설정해야 .

+0

흠 ...하지만 저장소에 한 번 설정해두고 싶습니다. 그래서 모든 컴퓨터에 설정하지 않아도됩니다. – PJSCopeland

+0

필자는 그렇게 생각하지 않는다. 레일스는 어떤 버전의 PostgreSQL이 실행 중인지와 임의의 머신에서 사용중인 포트를 파악하는 방법을 알지 못할 것이다. 우분투 상자, 데비안 상자, 몇 대의 Mac을 가지고 있다고 가정 해 봅시다. Rails가 무엇이 어디에서 작동하는지 알고 싶습니다. 환경 변수는 이런 종류의 일을하는 표준 방법이며, 빌드하는 대부분의 애플 리케이션은 다른 개발자 머신, 스테이징 서버 및 프로덕션 서버 간의 차이점을 다루기 위해 소수의 환경 변수로 끝납니다. –

+0

글쎄, 내가 말했듯이'pg_wrapper '가있다. 모든 Postgres 명령 행 스크립트는'--cluster = 9.1/main' 옵션을 취할 수 있으며 적합한 서비스를 선택할 수 있습니다. 왜 ActiveRecord의 어댑터가 아닐까요? – PJSCopeland

관련 문제