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?
Antworten:
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.yml
Im 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
CREATE ROLE <username> SUPERUSER LOGIN PASSWORD '<yourpassword>';
CREATE ROLE Alex SUPERUSER LOGIN;
. In der database.yml habe ich auch meinen Benutzernamen als festgelegt Alex
und den gleichen Fehler wie jmontross erhalten. Dann habe ich es geändert alex
und 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.
sudo apt-get install postgresql
wird die neueste verfügbare Version installiert.
Führen Sie für alle Ubuntu 13.10
Benutzer, 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 Nick
erklä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 gotqn
oben Gesagte durch das whoami
Ergebnis:
Der einfachste Weg, um Ihre Rails-Anwendung zu erstellen, besteht darin, anzugeben, dass Sie postgresql
Folgendes verwenden:
rails new Demo -d postgresql
Der obige Code fügt den pg
Edelstein automatisch in Ihre Datei ein GemFile
und erstellt die entsprechende database.yml
Datei:
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:create
dann den Rails-Server aus und starten Sie ihn.
sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ präzise-pgdg main'> /etc/apt/sources.list.d/pgdg.list"
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key hinzufügen -
sudo apt-get update
sudo apt-get install postgresql-common
sudo apt-get install postgresql-9.3 libpq-dev
CREATE ROLE
:ALTER ROLE <username> WITH PASSWORD '<yourpassword>';
database.yml