So verwenden Sie PostgreSQL mit Ihrer Ruby on Rails-Anwendung unter macOS

Einführung

Wenn Sie das Web-Framework Ruby on Rails verwenden, ist Ihre Anwendung standardmäßig so eingerichtet, dass SQLite als Datenbank verwendet wird. SQLite ist eine kompakte, tragbare und benutzerfreundliche relationale Datenbank, die in Umgebungen mit wenig Arbeitsspeicher eine besonders gute Leistung erbringt und in vielen Fällen gut funktioniert. Für hochkomplexe Anwendungen, die eine zuverlässigere Datenintegrität und programmgesteuerte Erweiterbarkeit erfordern, ist eine PostgreSQL -Datenbank eine robustere und flexiblere Wahl. Um Ihr Ruby on Rails-Setup für die Verwendung von PostgreSQL zu konfigurieren, müssen Sie einige zusätzliche Schritte ausführen, um es in Betrieb zu nehmen.

In diesem Tutorial richten Sie eine Ruby on Rails-Entwicklungsumgebung ein, die mit einer PostgreSQL-Datenbank auf einem lokalen MacOS-Computer verbunden ist. Sie installieren und konfigurieren PostgreSQL und testen dann Ihr Setup, indem Sie eine Rails-Anwendung erstellen, die PostgreSQL als Datenbankserver verwendet.

Voraussetzungen

Dieses Tutorial erfordert Folgendes:

  • Ein Computer oder eine virtuelle Maschine mit installiertem macOS, Administratorzugriff auf diese Maschine und Internetverbindung. Dieses Tutorial wurde unter macOS 10.14 Mojave getestet.

  • Eine Ruby on Rails-Entwicklungsumgebung, die auf Ihrem macOS-Computer installiert ist. Um dies einzurichten, folgen Sie unserer Anleitung unter How To Install Ruby on Rails with rbenv unter macOS. In diesem Tutorial werden Version 2.6.3 von Ruby und 5.2.3 von Rails verwendet. Informationen zu den neuesten Versionen finden Sie auf den offiziellen Websites unter Ruby und Rails.

Schritt 1 - PostgreSQL installieren

Um Ruby on Rails so zu konfigurieren, dass Ihre Webanwendung mit PostgreSQL als Datenbank erstellt wird, installieren Sie zuerst die Datenbank auf Ihrem Computer. Obwohl es viele Möglichkeiten gibt, PostgreSQL unter macOS zu installieren, wird in diesem Tutorial der Paketmanager Homebrew verwendet.

Es gibt mehrere Homebrew-Pakete, um verschiedene Versionen von PostgreSQL zu installieren. Führen Sie den folgenden Befehl aus, um die neueste Version zu installieren:

brew install postgresql

Wenn Sie eine bestimmte Version von PostgreSQL herunterladen möchten, ersetzen Sie + postgresql + im vorherigen Befehl durch das gewünschte Paket. Sie finden die verfügbaren Pakete auf der Homebrew-Website.

Fügen Sie als nächstes die PostgreSQL-Binärdatei in Ihre + PATH-Variable ein, um auf die PostgreSQL-Befehlszeilentools zuzugreifen. Ersetzen Sie dabei das` ++ `durch die Versionsnummer, die Sie verwenden:

echo 'export PATH="/usr/local/opt/postgresql@/bin:$PATH"' >> ~/.bash_profile

Wenden Sie dann die Änderungen, die Sie an Ihrer + ~ / .bash_profile + - Datei vorgenommen haben, auf Ihre aktuelle Shell-Sitzung an:

source ~/.bash_profile

Führen Sie Folgendes aus, um den Dienst zu starten und ihn beim Anmelden zu starten:

brew services start postgresql@

Überprüfen Sie, ob die Installation erfolgreich war:

postgres -V

Sie erhalten folgende Ausgabe:

Outputpostgres (PostgreSQL)

Nach der Installation von PostgreSQL müssen Sie im nächsten Schritt eine Rolle erstellen, die Ihre Rails-Anwendung später zum Erstellen Ihrer Datenbank verwendet.

Schritt 2 - Erstellen einer Datenbankrolle für Ihre Anwendung

In PostgreSQL können mit roles Berechtigungen und Berechtigungen organisiert werden. Wenn Sie PostgreSQL mit Homebrew starten, wird automatisch eine Superuser-Rolle mit Ihrem macOS-Benutzernamen erstellt. Um diese Superuser-Berechtigungen von der Datenbankinstanz zu trennen, die Sie für Ihre Rails-Anwendung verwenden, erstellen Sie in diesem Schritt eine neue Rolle mit weniger Zugriff.

Führen Sie den folgenden Befehl aus, um eine neue Rolle zu erstellen. Ersetzen Sie dabei "++" durch den Namen, den Sie der Rolle geben möchten:

createuser -P -d

In diesem Befehl haben Sie "+ createuser " verwendet, um eine Rolle mit dem Namen "+" zu erstellen. Das + -d + Flag gab der Rolle die Berechtigung, neue Datenbanken zu erstellen.

Sie haben auch das Flag "+ -P +" angegeben. Dies bedeutet, dass Sie aufgefordert werden, ein Kennwort für Ihre neue Rolle einzugeben. Geben Sie Ihr gewünschtes Passwort ein und notieren Sie es, damit Sie es in einem späteren Schritt in einer Konfigurationsdatei verwenden können.

Wenn Sie das Flag "+ -P +" nicht verwendet haben und nach dem Erstellen ein Kennwort für die Rolle festlegen möchten, geben Sie den folgenden Befehl in die PostgreSQL-Konsole ein:

psql postgres

Sie erhalten die folgende Ausgabe zusammen mit der Eingabeaufforderung für die PostgreSQL-Konsole:

Outputpsql ()
Type "help" for help.

postgres=#

Die PostgreSQL-Konsole wird durch die Eingabeaufforderung + postgres = # + gekennzeichnet. Geben Sie an der PostgreSQL-Eingabeaufforderung diesen Befehl ein, um das Kennwort für die neue Datenbankrolle festzulegen, und ersetzen Sie den hervorgehobenen Namen durch den von Ihnen erstellten:

\password

PostgreSQL fordert Sie zur Eingabe eines Passworts auf. Geben Sie Ihr gewünschtes Passwort an der Eingabeaufforderung ein und bestätigen Sie es.

Verlassen Sie nun die PostgreSQL-Konsole, indem Sie den folgenden Befehl eingeben:

\q

Ihre übliche Eingabeaufforderung wird nun wieder angezeigt.

In diesem Schritt haben Sie eine neue PostgreSQL-Rolle ohne Superuser-Berechtigungen für Ihre Anwendung erstellt. Jetzt können Sie eine neue Rails-App erstellen, die diese Rolle zum Erstellen einer Datenbank verwendet.

Schritt 3 - Erstellen einer neuen Rails-Anwendung

Mit Ihrer für PostgreSQL konfigurierten Rolle können Sie jetzt eine neue Rails-Anwendung erstellen, die für die Verwendung von PostgreSQL als Datenbank eingerichtet ist.

Navigieren Sie zunächst zu Ihrem Home-Verzeichnis:

cd ~

Erstellen Sie eine neue Rails-Anwendung in diesem Verzeichnis und ersetzen Sie "++" durch das, was Sie Ihre App nennen möchten:

rails new  -d=postgresql

Die Option + -d = postgresql + legt PostgreSQL als Datenbank fest.

Sobald Sie diesen Befehl ausgeführt haben, wird in Ihrem Ausgangsverzeichnis ein neuer Ordner mit dem Namen "++" angezeigt, der alle Elemente einer einfachen Rails-Anwendung enthält.

Wechseln Sie anschließend in das Anwendungsverzeichnis:

cd

Nachdem Sie eine neue Rails-Anwendung erstellt und in das Stammverzeichnis Ihres Projekts verschoben haben, können Sie Ihre PostgreSQL-Datenbank in Ihrer Rails-App konfigurieren und erstellen.

Schritt 4 - Konfigurieren und Erstellen Ihrer Datenbank

Beim Erstellen der Datenbanken "+ development" und "+ test" für Ihre Anwendung verwendet Rails die PostgreSQL-Rolle, die Sie in Schritt 2 erstellt haben. Um sicherzustellen, dass Rails diese Datenbanken erstellt, ändern Sie die Datenbankkonfigurationsdatei Ihres Projekts. Sie erstellen dann Ihre Datenbanken.

Eine der Konfigurationsänderungen, die Sie in Ihrer Rails-Anwendung vornehmen müssen, ist das Hinzufügen des Kennworts für die PostgreSQL-Rolle, die Sie im letzten Schritt erstellt haben. Um vertrauliche Informationen wie Kennwörter zu schützen, ist es empfehlenswert, diese in einer Umgebungsvariablen zu speichern, anstatt sie direkt in Ihre Konfigurationsdatei zu schreiben.

Führen Sie den folgenden Befehl aus, um Ihr Kennwort bei der Anmeldung in einer Umgebungsvariablen zu speichern. Ersetzen Sie dabei "" durch den Namen Ihrer Anwendung und "" durch das Kennwort, das Sie im letzten Schritt erstellt haben:

echo 'export _DATABASE_PASSWORD=""' >> ~/.bash_profile

Dieser Befehl schreibt den Befehl "+ export" in die Datei "+ ~ / .bash_profile", sodass die Umgebungsvariable beim Anmelden festgelegt wird.

Verwenden Sie den Befehl + source +, um die Variable für Ihre aktuelle Sitzung zu exportieren:

source ~/.bash_profile

Nachdem Sie Ihr Passwort in Ihrer Umgebung gespeichert haben, ist es an der Zeit, die Konfigurationsdatei zu ändern.

Öffnen Sie die Datenbankkonfigurationsdatei Ihrer Anwendung in Ihrem bevorzugten Texteditor. In diesem Tutorial wird "+ nano +" verwendet:

nano config/database.yml

Suchen Sie im Abschnitt "+ default " die Zeile " pool: <% = ENV.fetch (" RAILS_MAX_THREADS ") {5}%> +" und fügen Sie die folgenden hervorgehobenen Zeilen hinzu, wobei Sie Ihre Anmeldeinformationen und die Umgebungsvariable eingeben du hast erschaffen. Es sollte ungefähr so ​​aussehen:

config / database.yml

...
default: &default
 adapter: postgresql
 encoding: unicode
 # For details on connection pooling, see Rails configuration guide
 # http://guides.rubyonrails.org/configuring.html#database-pooling
 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>



development:
 <<: *default
 database: appname_development
...

Dadurch wird die Rails-Anwendung veranlasst, die Datenbank mit der richtigen Rolle und dem richtigen Kennwort auszuführen. Speichern und beenden Sie den Vorgang, indem Sie die Tastenkombination "+ STRG + X ", " Y " und dann " ENTER +" drücken.

Weitere Informationen zum Konfigurieren von Datenbanken in Rails finden Sie in der Rails-Dokumentation.

Nachdem Sie Änderungen an "+ config / database.yml " vorgenommen haben, erstellen Sie die Datenbanken Ihrer Anwendung mit dem Befehl " rails +":

rails db:create

Sobald Rails die Datenbank erstellt hat, erhalten Sie folgende Ausgabe:

OutputCreated database '_development'
Created database '_test'

Wie die Ausgabe vermuten lässt, erstellt dieser Befehl eine Entwicklungs- und Testdatenbank in Ihrem PostgreSQL-Server.

Sie haben jetzt eine PostgreSQL-Datenbank mit Ihrer Rails-App verbunden. Um sicherzustellen, dass Ihre Anwendung funktioniert, müssen Sie im nächsten Schritt Ihre Konfiguration testen.

Schritt 5 - Testen Ihrer Konfiguration

Versuchen Sie, Ihre Webanwendung so auszuführen, dass sie in einem Browser angezeigt wird, um zu testen, ob Ihre Anwendung die PostgreSQL-Datenbank verwenden kann.

Zunächst verwenden Sie den integrierten Webserver für Rails, Puma, um Ihre Anwendung bereitzustellen. Dieser Webserver wird automatisch mit Rails ausgeliefert und erfordert kein zusätzliches Setup. Führen Sie den folgenden Befehl aus, um Ihre Anwendung zu bedienen:

rails server --binding=127.0.0.1

+ - binding bindet Ihre Bewerbung an eine bestimmte IP. Standardmäßig bindet dieses Flag Rails an "+ 0.0.0.0 ", aber da dies bedeutet, dass Rails alle Schnittstellen überwacht, ist es sicherer, " 127.0.0.1 " zu verwenden, um den " localhost " anzugeben. Standardmäßig überwacht die Anwendung den Port " 3000 +".

Sobald Ihre Rails-App ausgeführt wird, verschwindet Ihre Eingabeaufforderung und wird durch diese Ausgabe ersetzt:

Output=> Booting Puma
=> Rails  application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version  (ruby -p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000
Use Ctrl-C to stop

Um zu testen, ob Ihre Anwendung ausgeführt wird, öffnen Sie ein neues Terminalfenster auf Ihrem Server und senden Sie mit dem Befehl "+ curl +" eine Anfrage an "+127.0.0.1: 3000 +":

curl http://127.0.0.1:3000

Sie erhalten eine Menge HTML-Ausgaben, die in etwa wie folgt enden:

Output...
       <strong>Rails version:</strong><br />
       <strong>Ruby version:</strong>  (x86_64-darwin18)
     </p>
   </section>
 </div>
</body>
</html>

Sie können auf Ihre Rails-Anwendung auch in einem lokalen Webbrowser zugreifen, indem Sie Folgendes besuchen:

http://127.0.0.1:3000

Unter dieser URL finden Sie eine Ruby on Rails-Begrüßungsseite:

Dies bedeutet, dass Ihre Anwendung ordnungsgemäß konfiguriert und mit der PostgreSQL-Datenbank verbunden ist.

Fazit

In diesem Lernprogramm haben Sie eine Ruby on Rails-Webanwendung erstellt, die für die Verwendung von PostgreSQL als Datenbank auf einem lokalen MacOS-Computer konfiguriert wurde. Weitere Informationen zur Programmiersprache Ruby finden Sie unter How To Code in Ruby series.

Weitere Informationen zur Auswahl einer Datenbank für Ihre Anwendung finden Sie in unserem Lernprogramm zu den Unterschieden und Anwendungsfällen von https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison -der-relationalen-Datenbank-Management-Systeme [SQLite, PostgreSQL und MySQL]. Weitere Informationen zur Verwendung von Datenbanken finden Sie in unserem Einführung in Abfragen in PostgreSQL -Artikel oder im https von DigitalOcean: //www.digitalocean.com/products/managed-databases/[Managed Databases product].