#ruby-on-rails #travis-ci #postgresql-11
#ruby-на-рельсах #travis-ci #postgresql-11 #ruby-on-rails
Вопрос:
У меня возникли проблемы со сборкой приложения Rails для базы данных PostgreSQL 11.2.
Вот .travis.yml
файл:
rvm:
- 2.6.1
dist: xenial
services:
- postgresql
addons:
postgresql: "11.2"
apt:
packages:
- postgresql-11
before_script:
- psql --version
- psql -c 'create database kpdotcom_test;' -U postgres
- cp config/database.yml.travis config/database.yml
- bundle exec rake db:schema:load
Однако сборка завершается с ошибкой:
Любые предложения будут с благодарностью приняты.
Ответ №1:
У меня тоже была эта проблема. Вот конфигурационный файл, который исправил это для меня:
Этот скрипт:
- Завершает работу всех 9.* Базы данных PostgreSQL
- устанавливается 11.2 (на момент написания этой статьи)
- копирует информацию аутентификации из старой конфигурации 9.6
- создает роль с именем «travis»
language: ruby
rvm: 2.6.2
before_install:
- sudo apt-get update
- sudo apt-get --yes remove postgresql*
- sudo apt-get install -y postgresql-11 postgresql-client-11
- sudo cp /etc/postgresql/{9.6,11}/main/pg_hba.conf
- sudo service postgresql restart 11
before_script:
- psql --version
- psql -c 'CREATE DATABASE {{your database name here}};' -U postgres
- psql -c 'CREATE ROLE travis SUPERUSER LOGIN CREATEDB;' -U postgres
- cp config/database.yml.travis config/database.yml
script: bundle exec rake spec
services:
- postgresql
addons:
postgresql: "11.2"
Ответ №2:
Ответ Джонатана Уилера мне очень помог. Однако мне нужно было установить postgres 11 в focal
дистрибутив, тогда как в первоначальном post используется xenial
.
Оказалось, что мне пришлось немного подправить конфигурационный файл travis. Я подумал, что это может помочь любому, кто пытается установить postgres 11 на focal
. В принципе, вам нужно:
- импортируйте ключ подписи репозитория (
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
) - добавить содержимое репозитория в систему Ubuntu 20.04 (
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql-pgdg.list
) - установите PostgreSQL 11 (
sudo apt -y update amp;amp; sudo apt -y install postgresql-11 postgresql-client-11
) - измените файлы конфигурации pg:
- измените порт (
port = 5433/port = 5432
) - облегчите доступ пользователей к postgres (
peer/trust
)
- измените порт (
- измените права доступа
sudo chmod 750 /var/lib/postgresql/11/main
Вот сценарий:
before_install:
- sudo apt -y remove postgresql*
- wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql-pgdg.list
- sudo apt -y update
- sudo apt -y install postgresql-11 postgresql-client-11
- sudo sed -i 's/port = 5433/port = 5432/' /etc/postgresql/11/main/postgresql.conf
- sudo sed -i 's/local all postgres peer/local all postgres trust/' /etc/postgresql/11/main/pg_hba.conf
- sudo chmod 750 /var/lib/postgresql/11/main
- sudo service postgresql restart 11
Я мог бы оставить before_script
так, как это было дано Джонатаном Уилером.
Если вы не уверены, вы можете проверить порт postgres, добавив временную строку в скрипт: echo $(sudo cat /etc/postgresql/11/main/pg_hba.conf)
и выполнить поиск port = 543
в журналах.
То же самое для метода аутентификации postgres: echo $(sudo cat /etc/postgresql/11/main/postgresql.conf)