Anda dapat terhubung ke server Postgres dengan eksplisit (my yaitu nama pengguna OS) atau implisit (timonin yaitu peran dalam database.yml ) masuk.
Seperti yang saya lihat database.yml . Anda memiliki pernyataan nama pengguna, tetapi hanya untuk produksi lingkungan. Menjalankan tes rake tanpa menentukan lingkungan Rails akan menjalankannya melawan pengembangan lingkungan secara default. Itu sebabnya Anda memiliki kesalahan seperti FATAL: role "my" does not exist .
Jadi tergantung pada kebutuhan Anda, Anda harus menambahkan pernyataan ini ke semua definisi basis data (test dan development juga):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Setelah itu aplikasi Rails Anda akan terhubung sebagai timonin pengguna.
Daftar periksa lengkapnya adalah sebagai berikut:
- Buat peran
Berikut adalah SQL untuk PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Batalkan komentar atau tambahkan pernyataan
username: timonindanpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>ke file database.yml Anda - Lari semua operasi dengan
TIMONIN_DATABASE_PASSWORDvariabel:
Berikut perintah rake yang diubah:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
atau:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
untuk lingkungan pengujian.