1

내 rails4 응용 프로그램에 PG를 사용하고 있습니다.Postgres <=> 레일. database.yml에서 사용자를 자동 생성하는 방법

복제본을 새 컴퓨터에 보내거나 프로젝트를 지울 때마다 응용 프로그램을 다시 작동시키기 전에 포스트그레스 사용자를 계속 만들어야합니다. 나는이 문제를 자동화 할 수있는 방법이 있나요

이 내가 디자이너 등 내 코드를 공유 문제가 그들이 불필요하게 DB 사용자를 설정하는 등

그들에게 슈퍼 사용자를 만드는 세부 사항을 얻을 수 있고, PG 젬을 사용하고 Rails가 데이터베이스에서 필요한 사용자에 대해 이미 알고 있다는 것을 감안하면

+0

누구든지 postgres 사용자를 생성하기 위해 실행할 수있는 간단한 쉘 스크립트를 작성하지 않는 이유는 무엇입니까? –

답변

1

이렇게하면 안됩니다. database.yml은 버전 컨트롤에 속하지 않습니다 (How to manage Rails database.yml 참조).

앱이 config/database.yml에 템플릿 파일을 복사하고, 자신의 지역 발전에 연결하기 위해 자신의 기존 데이터베이스 사용자 및 암호를 추가해야 클론 템플릿 파일 (내가 config/database.yml.example 사용) 각 사람을 저장해야 Postgres의 인스턴스.

디자이너는 로컬 컴퓨터에도 단일 개발 사용자가 있어야하며 자격 증명은 config/database.yml에 배치해야합니다.

Rails가 데이터베이스 사용자를 만들 수있는 방법이 없습니다. Rails가 사용해야 할 데이터베이스 사용자 인 데이터베이스 사용자에게 알려야하기 때문입니다. 개발 환경의 모든 앱은 동일한 사용자를 사용해야합니다.

+1

나는 동의하지 않는다; 나는 version control에서'database.yml'의 * development *와 * test * 섹션을 갖는 것이 좋다고 생각합니다.devs가 아무 이유없이 농구를 뛰어 넘는 것을 만드는 데 아무런 의미가 없습니다. – Dogweather

0

바로 PostgreSQL의 설치 후 --auth-local trust 옵션을 initdb 명령을 실행하면 이후의 모든 데이터베이스 사용자 인증 우회 : 개발 환경 외부에서 사용할 때

initdb /usr/local/var/postgres -E utf8 --auth-local trust 

은 물론이 중요한 보안 문제가 될 것을 . 그러나 프로젝트에서 일하는 사람들을위한보다 신속한 설치가 필요한 구체적인 필요성에 관해 언급 한 이후, 귀하의 경우 가능한 접근 방식 인 것 같았습니다.

0

@meagar는 버전 제어에서 비밀번호와 키를 지키려면 정확하므로 염두에 두십시오.

요즘 로그인 정보를 저장하기 위해 환경 변수를 사용하는 것은 데이터가 본질적으로 실행중인 환경에 묶여 있기 때문입니다. 따라서 실제 비밀이 아닌 환경 변수에 대한 호출을 제공한다면 사실상 database.yml을 버전 제어로 점검 할 수 있습니다.

예를 들어 파일에 username: <%= ENV[DB_USER_DEV] %>password: <%= ENV[DB_PASS_DEV] %>과 같은 것을 넣을 수 있습니다. 그런 다음 DB_USER_DEV=my_psql_usernameDB_PASS_DEV=hashed_gibberish~/.profile에 입력합니다.

방랑제를 사용하여 기본 상자에 대한 Vagrant 파일의 프로비저닝에서 사용자 및 환경 변수를 만듭니다. 우리의 모든 프로젝트는 동일한 기본 상자를 사용하고 ENV 값을 database.yml에 추가하면 개발자의 모든 것을 자동화 할 수 있습니다!