2012-06-19 2 views
71

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

ответ

163

Вот шаги, я затем:

Установка PostgreSQL и разработка пакета

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

Настройка пользователя, которая является такой же, как мой Ubuntu войти в

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

Modify Gemfile

# Remove gem 'sqlite3' 
gem 'pg' 

Изменить database.yml в каталоге приложения

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 

Создание баз данных и миграции

$ 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

+14

Если вы хотите добавить пароль использует эту команду после запуска 'CREATE ROLE':' ALTER ROLE WITH PASSWORD ''; 'затем, очевидно, добавить свой пароль в' database.yml' – Hengjie

+9

В качестве альтернативы, если вы просто создаете роль для первого и хотите ввести пароль: 'CREATE ROLE SUPERUSER LOGIN PASSWORD ' '; ' – Hengjie

+0

Если вы установите пользователя как идентичное с вашим именем пользователя unix, безопасно ли это, даже если пароль отсутствует? На основании, например, ссылки mrfrosti.com выше, а также Postok.app Heroku, похоже, что это часто предложенный маршрут. –

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

Самым простым способом создайте ваше приложение для рельсов, чтобы указать, что вы используете 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 и запустите сервер рельсов.