2011-12-13 11 views
8

私は最初のレール3.0アプリケーションをビルドしていますが、私の開発マシン(10.6が動作しています)でpostgreSQLサーバを本番環境としてテストします。新しいアプリケーションとrake db:migrateを作成すると、3つの環境すべてに対してsqlite dbが作成されます。クール。今私は生産に移り、ポストグルを使う方法を学びたいと思う。私はhomebrewを使ってpostgresをインストールし、(env ARCHFLAGS="-arch x86_64" gem install pg)postgres-pr gemsをインストールしました。rails 3 postgreSQLの基本的な 'データベースが存在しません'

rake db:migrateを実行しましたが、sqlite3のように私のdatabase.yml(下記参照)を更​​新してからプロダクションサーバが自動的にビルドされます。

OKは、私のアプリのフォルダに、私は「rails s --environment=production」を使用して、サーバーを再起動し、それが私の本番データベースを見つけることができないと言っベイル。

Googleの検索で「レール3のポストグルをインストールする」と表示されていたのですが、レールは新しい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 namedatabase.ymlがセットアップされたら、次に

development: 
    database: vitae_development 
    username: rails 
    ... 

、あなたは(必要な場合)create the database userをいただきたいからpsql内側:

psql> create role rails login; 

、その後let Rails create the database

$ rake db:create 

次に、移行を実行して初期のテーブルを作成してもらうことができます。

あなたはおそらく、あなたが右のオプションを得ることを確認するためにcreate roleドキュメントを読むことをお勧めします。プロダクションではなく開発環境で作業したいと思っていますので、名前とYAMLを変更してプロダクションを展開しています。まだ何も展開していないと思います。

4

Im'notいますが、Postgresのスーパーユーザとしてデータベースを作成し、権限を付与することができ、あなたのLinuxディストリビューションでのPostgresのスーパーと仮定ユーザーはpostgresにある:他のユーザーへのpostgres許可権限で、その後

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; 

その後、あなたの設定ファイルは次のようになります。

production: 
    adapter: postgresql 
    host: localhost 
    database: vitae_production 
    pool: 5 
    timeout: 5000 
    username: rails 
    password: myPassword 
関連する問題