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: timonin
danpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
ke file database.yml Anda - Lari semua operasi dengan
TIMONIN_DATABASE_PASSWORD
variabel:
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.