CruiseControl.rb выбрасывает исключение с Postgres - PullRequest
1 голос
/ 01 сентября 2011

В VPS у меня установлен Postgres и 2 проекта Rails. Оба работают в производственном режиме и подключают PG как разных пользователей.

Теперь я хочу установить CruiseControl.rb для одного из них. Все прошло отлично, за исключением того, что круиз пытается запустить тест, он выдает эту ошибку:

PGError: ERROR:  permission denied to create database
: CREATE DATABASE "myProject" ENCODING = 'utf8'

Эта тестовая база данных создана с другим именем владельца, и все они указаны правильно в ~/.cruise/projects/myProject/work/config/database.yml.

Когда я запускаю эти следующие серии команд вручную внутри ~/.cruise/projects/myProject/work, они работают отлично.

RAILS_ENV=test rake db:migrate
rake test

Я создал базу данных, используя следующие команды:

create user test_user with password 'abcxyz';
create database test_database TEMPLATE template0 owner test_user;
grant all privileges on database test_database to test_user;

После нажатия кнопки Build Now, test_database удаляется, а затем пытается создать его снова и выбрасывает это исключение.

Я озадачен, почему тестовая БД удаляется в первую очередь? Здесь что-то мне не хватает?

1 Ответ

0 голосов
/ 01 сентября 2011

Похоже, вы не предоставили доступ вашему тестовому пользователю для создания новой базы данных, даже если вы предоставили разрешения для test_user в существующей базе test_database.

Возможно, вам потребуется предоставить привилегии для создания новой БД, например:

GRANT CREATE ON SCHEMA public TO test_user;

Команды, которые вы выполняли до создания test_user и, следовательно, должны были выполняться от имени администратора или пользователя postgres.

TL; DR

Вы должны сравнить разрешения для вашего пользователя в круизе с пользователем, с которым вы выполнили эти шаги вручную, что-то не так, препятствуя созданию тестовой БД во время db: test: prepare

...