Вопрос по ubuntu, ruby, heroku, postgresql, ruby-on-rails – Установка PostgreSQL в Ubuntu для Ruby on Rails

72

В настоящее время у меня установлен Ruby on Rails через RVM в Ubuntu 12.04. База данных по умолчанию настроена в SQLite3, но я бы хотел переключиться на PostgreSQL для целей перехода на Heroku. Как я могу сделать это?

Ваш Ответ

3   ответа
165

Вот шаги, которые я выполнил:

Install PostgreSQL and development package

$ sudo apt-get install postgresql
$ sudo apt-get install libpq-dev

Set up a user that is the same as my Ubuntu log-in

$ sudo su postgres -c psql
postgres=# CREATE ROLE <username> SUPERUSER LOGIN;
postgres=# \q

Modify Gemfile

# Remove gem 'sqlite3'
gem 'pg'

Modify database.yml in app directory

development:
  adapter: postgresql
  encoding: unicode
  database: appname_development
  pool: 5
  timeout: 5000
  username: <username>
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: appname_test
  pool: 5
  timeout: 5000
  username: <username>
  password:

Run bundle install

$ bundle install

Create databases and migrations

$ rake db:create:all
$ rake db:migrate

Вот источники, которые я использовал, чтобы помочь:
http://mrfrosti.com/2011/11/postgresql-for-ruby-on-rails-on-ubuntu/
http://railscasts.com/episodes/342-migrating-to-postgresql
https://devcenter.heroku.com/articles/local-postgresql

Если вы хотите добавить пароль, используйте эту команду после запускаCREATE ROLE: ALTER ROLE <username> WITH PASSWORD '<yourpassword>'; затем, очевидно, добавьте свой пароль вdatabase.yml
Если вы устанавливаете пользователя как идентичного имени пользователя unix, это безопасно, даже если нет пароля? На основании, например, ссылки выше на mrfrosti.com, а также Postgress.app от Heroku кажется, что это часто предлагаемый маршрут.
ФАТАЛЬНО: Одноранговая аутентификация не удалась для пользователя "удивительный"
Работал на меня. Я создал своего пользователя PSQL с помощью следующей команды:CREATE ROLE Alex SUPERUSER LOGIN;, В файле database.yml я также установил имя пользователя какAlex и получил ту же ошибку, что и Jmontross. Затем я изменил его наalex и все заработало. Я также должен был бежатьrake db:migrate RAILS_ENV=test, Также обратите внимание - этот метод переносит базу данных из sqlite3 в postgres, но не переносит фактические данные в базе данных. Чтобы перенести его также, обратитесь к Railscast, указанному в ответе.
В качестве альтернативы, если вы впервые создаете роль и хотите также ввести пароль:CREATE ROLE <username> SUPERUSER LOGIN PASSWORD '<yourpassword>';
2

sudo sh -c "echo" debhttp://apt.postgresql.org/pub/repos/apt/ Precision-PGDG Main & apos; & GT; /etc/apt/sources.list.d/pgdg.list"

wget --quiet -O -http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -

sudo apt-get update

sudo apt-get установить postgresql-common

sudo apt-get установить postgresql-9.3 libpq-dev

6

Для всехUbuntu 13.10 пользователи, открывающие эту тему, следуют инструкциям ниже для установкиpostresql:

sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-common -t saucy
sudo apt-get install postgresql-9.2 libpq-dev

поскольку официального репозитория Postgres дляUbuntu 13.10.

Затем создайте пользователя какNick объясните (вы также можете указать пароль):

sudo su postgres -c psql
postgres=# CREATE ROLE gotqn SUPERUSER LOGIN;
postgres=# \password gotqn
postgres=# \q

Примечание: заменитьgotqn выше сwhoami результат:

enter image description here

Самый простой способ создать приложение rails - указать, что вы используетеpostgresql следующее:

rails new Demo -d postgresql

Код выше автоматически добавитpg жемчужина в вашемGemFile и создать соответствующийdatabase.yml файл:

development:
  adapter: postgresql
  encoding: unicode
  database: Demo_development
  pool: 5
  username: gotqn
  password: mypass

Примечание. Вам необходимо изменить имя пользователя и указать правильный пароль, если вы его установили.

Тогда бегиrake db:create и запустить сервер рельсов.

Похожие вопросы