Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

cool:rails

Einführung

Ruby on Rails ist ein beliebtes Framework für Web-Applikationen, das inzwischen auch Frameworks für andere Sprachen inspiriert hat.

„Django|Catalyst|… is for Python|Perl|… what Rails is for Ruby.“

Mittels Rails kannst du dir mit wenigen Befehlen ein Applikationsgerüst bauen, das du dann entsprechend deiner Wünsche ausbauen kannst. Für das sogenannte Deployment lassen sich Rails-Applikationen mit einer Vielzahl an Schnittstellen zum Web versehen.

Eine Einführung findest du in dem Artikel Getting Started with Rails.

Rails-Anwendungen lassen sich prima auf dem eigenen Rechner entwickeln und in einem Uberspace „live“ machen. Für alle gems, die du installierst, wird in der Datei .gemfile.lock die genaue Version notiert. Das erledigt Bundler. So kannst du deine Entwicklungen exakt so in dem Uberspace installieren, wie du sie ans Laufen gebracht hast. Wir empfehlen dir, Projekte mit git zu versionieren.

Projekt anlegen

Wir nennen unser Projekt in dieser Demo my-rails-project und legen es in unserem Home-Verzeichnis an:

[anabell@amnesia ~]$ rails new my-rails-project

Daraufhin wird das Verzeichnis angelegt und das entsprechende „Skelett“ für deine Applikation generiert. Das war's - damit ist dein erstes Rails-Projekt angelegt. Du solltest für die weiteren Schritte in das Verzeichnis des Projekts wechseln:

[anabell@amnesia ~]$ cd my-rails-project

Wir empfehlen Unicorn als Webserver. Dieser startet Rails und produziert die Ausgaben, die dann von unserem Apache durchgereicht werden.

Damit das geht, brauchst du erst einmal das entsprechende Gem:

[anabell@amnesia my-rails-project]$ echo gem 'unicorn' >> Gemfile

Anschließend muss das Gem noch installiert werden, per Bundler:

[anabell@amnesia my-rails-project]$ bundle

Ausprobieren

Um zu sehen, ob Rails ordentlich startet, kannst Du den Entwicklungsserver verwenden:

[anabell@amnesia my-rails-project]$ bundle exec rails server

Das ist aber eigentlich nur auf dem Entwicklungssystem sinnvoll. Für eine dauerhaft laufende Installation fahre fort mit dem nächsten Abschnitt.

Live schalten

Bevor du Anwendung live schalten kannst, sollte sie benutzbar sein und im Production-Modus funktionieren. Rails startet in diesem Modus mit einer anderen Datenbank-Konfiguration und mit einigen Optimierungen. Das macht für dich vor allem den Unterschied, dass eine eigene Datenbank für diesen Zweck verwendet wird. Du solltest vor dem ersten Start also die üblichen Schritte durchführen, um diese zu initialisieren.

Folgende Umgebungsvariable sorgt dafür, dass beim Start der Anwendung der Production-Modus gewählt wird:

[anabell@amnesia my-rails-project]$ export RAILS_ENV=production

Die Datenbank erstellen geht so:

[anabell@amnesia my-rails-project]$ bundle exec rake db:migrate

Ob das funktioniert, kannst du durch das übliche Kommando testen:

[anabell@amnesia my-rails-project]$ bundle exec rails server

Rails verwendet ein Geheimnis, mit dem Session-Informationen verschlüsselt werden, um Angriffe zu unterbinden. Dies brauchst du zum Starten der Anwendung im produktiven Modus:

[anabell@amnesia my-rails-project]$ rake secret

Das Ergebnis notiere dir. Wir speichern es in einer Umgebungsvariable in der .bash_profile (füge das Ergebnis unter /secret/ ein):

[anabell@amnesia my-rails-project]$ $EDITOR ~/.bash_profile
export SECRET_KEY_BASE={secret}
export RAILS_SERVE_STATIC_FILES=true
export RAILS_ENV=production

Die beiden anderen Export-Aufrufe setzen Variablen, die Rails im produktiven Modus starten lässt und es anweist, auch die Asset-Dateien der Anwendung selber auszuliefern (so ist es in unserer Umgebung am einfachsten einzurichten). Nun sollten die Shell einmal neu initialisiert werden:

[anabell@amnesia my-rails-project]$ source ~/.bash_profile

Dann brauchen wir noch einen port. Wähle eine beliebige Nummer zwischen 32000 und 65000 und schauen, ob der Port unter dieser Nummer noch frei ist.

[anabell@amnesia my-rails-project]$ netstat -tulpen | grep {port}

Wenn da nichts erscheint, dann ist das gut. Wenn doch, dann benutzt ein anderes Programm bereits den Port. Wiederhole in diesem Fall die Wahl.

Sobald du einen Port gewählt hast, trage ihn in deiner .htaccess-Datei ein:

[anabell@amnesia my-rails-project]$ $EDITOR ~/html/.htaccess

RewriteEngine On
RewriteRule (.*) http://localhost:{port}/$1 [P]

Anschließend starte Unicorn für einen Testlauf:

[anabell@amnesia my-rails-project]$ bundle exec unicorn_rails --host 127.0.0.1 --port {port}

Besuche deinen Uberspace und sieh nach, ob es funktioniert:

https://{uberspace}.{server}.uberspace.de

Dort sollte dann stehen „The page you were looking for doesn't exist.“, weil die Applikation noch keine Seiten ausliefert. Aber der Server läuft in dem Fall bereits und das ist alles, was wir an dieser Stelle wünschen. So kannst du Unicorn nun mit CTRL+C beenden und mit dem nächsten Schritt dafür sorgen, dass der Webserver dauerhaft läuft.

Daemontools

Es geht weiter mit den Daemontools.

Erst einmal erstelle ein Service-Verzeichnis, falls es noch nicht existiert:

[anabell@amnesia ~]$ test -d ~/service || uberspace-setup-svscan

Dann erstelle ein einen Service für unser Rails-Projekt:

[anabell@amnesia ~]$ uberspace-setup-service my-rails-project bundle exec unicorn_rails --host 127.0.0.1 --port {port}

Dieser Service braucht noch eine kleine Anpassung, damit der Server im richtigen Verzeichnis gestartet wird:

[anabell@amnesia ~]$ sed -i -e 's/exec/cd ~\/my-rails-project\/\nexec/' ~/service/my-rails-project/run

Dann kann der Dienst gestartet werden:

[anabell@amnesia ~]$ svc -u ~/service/my-rails-project

Von nun an sorgt unser System dafür, dass dein Dienst ständig läuft.

Weitere Projekte anlegen

Bei weiteren Projekten kannst du dir die ganzen Zwischenschritte sparen - Bundler merkt sich in ~/.bundle/config die oben vorgenommene Konfiguration. Soll heißen, es reicht bei weiteren Projekten dann dieser Befehl:

[anabell@amnesia ~]$ rails new my-second-rails-project

Vergiss bei der Einrichtung nicht, für dieses Projekt einen anderen Port auszuwählen!

Wie geht es weiter?

Unser Part bei der Sache ist, wie du Ruby on Rails bei Uberspace zum Laufen bekommst, also sozusagen der administrative Teil. Dein eigener Job ist es nun, Rails-Applikationen zu entwickeln - da legen wir dir die Ruby on Rails Guides ans Herz, die den Teil des Deployments, das wir oben entwickelt haben, ohnehin nicht sonderlich würdigen, dafür aber eben viel über Rails und seine Grundlagen erklärt. Viel Erfolg!

cool/rails.txt · Zuletzt geändert: 2015/11/05 20:38 von uber