2011-12-13 4 views
8

좋아요, 첫 번째 레일 3.0 앱을 만들고 내 개발 컴퓨터 (10.6을 실행 중입니다)에서 프로덕션 환경으로 postgreSQL 서버를 테스트하고 싶습니다. 새 앱을 만들고 rake db : migrate를 실행하면 세 가지 환경 모두에서 sqlite db가 생성됩니다. 시원한. 이제 생산으로 이동하고 포스트그레스를 사용하는 방법을 배우고 싶습니다. 나는 homebrew를 사용해 postgres를 설치했고, (env ARCHFLAGS="-arch x86_64" gem install pg)postgres-pr gems을 설치했다.레일즈 3 PostgreSQL 기본 '데이터베이스가 존재하지 않습니다.'

나는 rake db:migrate을 실행하여 sqlite3처럼 내 database.yml (아래 참조)을 업데이트 한 이후에 프로덕션 서버를 자동으로 빌드합니다.

내 응용 프로그램 폴더에서 'rails s --environment=production'을 (를) 사용하여 서버를 다시 시작하면 제품 데이터베이스를 찾을 수 없다는 메시지가 표시됩니다.

그래서 '레일 3 포스트그레스 설치'에 대한 모든 Google 검색은 지금까지 나에게있어 왔지만 레일스가 새로운 Pg 데이터베이스를 만들지 못하고 있기 때문에 뭔가 빠져있는 것처럼 보입니다.

ps에 의해 결정되는대로 postgres가 실행 중입니다.

createdb -Omysuperusername -Eutf8 vitae_production 
createdb -Omysuperusername -Eutf8 /Users/sam/apps/vitae/db/vitae_production 

하지만이 디렉토리에는이 데이터베이스가 없으므로 놓친 것 같습니다. 나는 무엇을 간과하고 있는가?

내 database.yml을이 스 니펫이된다 레일

production: 
    adapter: postgresql 
    host: localhost 
    database: db/vitae_production 
    pool: 5 
    timeout: 5000 
    username: mysuperusername 
    password: 

답변

12

여기에 몇 가지 작업이 있습니다. 무엇보다도 먼저 database.ymldatabase: 설정을위한 SQLite와 PostgreSQL 형식을 혼합 한 것 같습니다. SQLite는, 당신처럼 뭔가 specify the relative path to the SQLite database file로 :

database: db/vitae_production.sqlite 

하지만 PostgreSQL을 가진

,이 같은 것을 사용하면 specify the database name : 다음

development: 
    database: vitae_development 
    username: rails 
    ... 

, 한 번 database.yml는 설정, 당신은 거라고 create the database user (필요한 경우)에서 psql 내부 :

psql> create role rails login; 

다음 let Rails create the database :

$ rake db:create 

그런 다음 마이그레이션을 실행하여 초기 표를 만들고 멀리 이동할 수 있어야합니다.

올바른 옵션을 얻으려면 create role 설명서를 읽고 싶을 것입니다.프로덕션보다는 개발 환경에서 일하고 싶을 것입니다. 따라서 이름과 YAML을 변경하여 프로덕션을 배포하고 사용자가 아직 아무 것도 배포하지 않았다고 생각합니다.

4

Im'not 익숙하지만 당신은 포스트 그레스 슈퍼 사용자로 데이터베이스를 만들 수 있습니다 후 가정 권한을 부여 당신의 리눅스 배포판 포스트그레스 슈퍼에서

포스트 그레스 부여 권한에 다음
su root 
su postgres 
createdb vitae_production 

다른 사용자

psql 
CREATE USER rails WITH PASSWORD 'myPassword'; 
GRANT ALL PRIVILEGES ON DATABASE vitae_production TO rails; 
ALTER DATABASE vitae_production OWNER TO rails; 
에 : 사용자가 포스트 그레스입니다3210

설정 파일은 다음과 같아야합니다.

production: 
    adapter: postgresql 
    host: localhost 
    database: vitae_production 
    pool: 5 
    timeout: 5000 
    username: rails 
    password: myPassword 
관련 문제