明示的な(my
を使用してPostgresサーバーに接続できます つまり、OSユーザー名)または暗黙的(timonin
つまり、database.yml
での役割 )ログイン。
私が見るようにあなたのdatabase.yml
ユーザー名ステートメントがありますが、本番用のみ 環境。 Rails環境を指定せずにrakeテストを実行すると、開発に対してそれらが実行されます。 デフォルトでは環境。そのため、FATAL: role "my" does not exist
のようなエラーが発生します 。
したがって、ニーズに応じて、これらのステートメントをすべてのデータベースの定義に追加する必要があります(test
およびdevelopment
同様に):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
その後、Railsアプリケーションはtimonin
として接続します ユーザー。
完全なチェックリストは次のとおりです。
- 役割を作成する
SQLforPostgreSQLは次のとおりです。
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- コメントのコメントを外すかステートメントを追加する
username: timonin
およびpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
database.ymlファイルに - 実行
TIMONIN_DATABASE_PASSWORD
を使用したすべての操作 変数:
変更されたrakeコマンドは次のとおりです。
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
または:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
テスト環境用。