Installation von PostgreSQL unter Ubuntu für Ruby on Rails

73

Ich habe derzeit Ruby on Rails über RVM in Ubuntu 12.04 installiert. Die Standarddatenbank ist in SQLite3 eingerichtet, aber ich möchte zu PostgreSQL wechseln, um auf Heroku zu pushen. Wie kann ich das erreichen?

Nick
quelle

Antworten:

168

Hier sind die Schritte, die ich befolgt habe:

Installieren Sie PostgreSQL und das Entwicklungspaket

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

Richten Sie einen Benutzer ein, der mit meinem Ubuntu-Login identisch ist

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

Gemfile ändern

# Remove gem 'sqlite3'
gem 'pg'

database.ymlIm App-Verzeichnis ändern

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:

Führen Sie die Bundle-Installation aus

$ bundle install

Erstellen Sie Datenbanken und Migrationen

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

Hier sind die Quellen, aus denen ich geholfen habe:
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

Nick
quelle
14
Wenn Sie ein Passwort hinzufügen möchten, verwenden Sie diesen Befehl nach dem Ausführen CREATE ROLE: ALTER ROLE <username> WITH PASSWORD '<yourpassword>';database.yml
Fügen Sie
9
Alternativ, wenn Sie die Rolle nur zum ersten Mal erstellen und auch ein Passwort eingeben möchten:CREATE ROLE <username> SUPERUSER LOGIN PASSWORD '<yourpassword>';
Hengjie
1
FATAL: Peer-Authentifizierung für Benutzer "awesome"
fehlgeschlagen
1
Hat für mich gearbeitet. Ich habe meinen psql-Benutzer mit folgendem Befehl erstellt : CREATE ROLE Alex SUPERUSER LOGIN;. In der database.yml habe ich auch meinen Benutzernamen als festgelegt Alexund den gleichen Fehler wie jmontross erhalten. Dann habe ich es geändert alexund alles hat funktioniert. Ich musste auch rennen rake db:migrate RAILS_ENV=test. Beachten Sie auch, dass diese Methode die Datenbank von sqlite3 nach postgres migriert, jedoch nicht die tatsächlichen Daten in der Datenbank migriert. Informationen zum Migrieren finden Sie in der in der Antwort genannten Railscast.
Alexander
1
2 Jahre später ist das einzige, was von dieser Antwort etwas alt ist, die Postgresql-Version. Mit dem Befehl sudo apt-get install postgresqlwird die neueste verfügbare Version installiert.
alf
6

Führen Sie für alle Ubuntu 13.10Benutzer, die diesen Thread öffnen, die folgenden Schritte aus, um ihn zu installieren 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

da es kein offizielles Postgres-Repository für gibt Ubuntu 13.10.

Erstellen Sie dann den Benutzer wie Nickerklärt (Sie können auch ein Passwort angeben):

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

Hinweis: Ersetzen Sie das gotqnoben Gesagte durch das whoamiErgebnis:

Geben Sie hier die Bildbeschreibung ein

Der einfachste Weg, um Ihre Rails-Anwendung zu erstellen, besteht darin, anzugeben, dass Sie postgresqlFolgendes verwenden:

rails new Demo -d postgresql

Der obige Code fügt den pgEdelstein automatisch in Ihre Datei ein GemFileund erstellt die entsprechende database.ymlDatei:

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

Hinweis: Sie müssen den Benutzernamen ändern und das richtige Kennwort angeben, wenn Sie ein solches festgelegt haben.

Führen Sie rake db:createdann den Rails-Server aus und starten Sie ihn.

gotqn
quelle