Benutzer-Werkzeuge

Webseiten-Werkzeuge


cool:rails
Alle Anleitungen in diesem Wiki beziehen sich auf Uberspace 6. Die Dokumentation für U7 findest du im neuen Manual. Im Lab findest du außerdem von Usern erstellte Anleitungen für verschiedene Projekte.

Uberspace 6 basiert auf CentOS 6, welches ab Ende 2020 keine Updates mehr bekommt. Wir raten dir, bis dahin auf Uberspace 7 umzuziehen. Eine Anleitung zum Umzug findest Du hier: uberspace2uberspace

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
cool:rails [2015/11/05 20:38]
uber [Live schalten] fehlendes "bundle exec" hinzugefügt
cool:rails [2020/04/14 16:40] (aktuell)
uberspace
Zeile 1: Zeile 1:
-====== Einführung ====== +Hier stand bisher unsere Anleitung, um Ruby on Rails auf deinem ​Uberspace ​zu installierenDa Uberspace ​6 Ende 2020 ausläuft (siehe oben) raten wir dringend davon abnoch neue Projekte ​auf einem 6er Uberspace ​zu startenStattdessen ​empfehlen ​wirneue Projekte ​auf einem neuen Uberspace 7 zu beginnen. [[https://manual.uberspace.de/lang-ruby.html|Ruby]] wird auch unter Uberspace ​7 supporteteine Rails-Anleitung haben wir aber [[https://github.com/Uberspace/lab/|noch]] nicht.
- +
-[[http://​rubyonrails.org/​|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 +
-[[http://​guides.rubyonrails.org/​getting_started.html|Getting Started with +
-Rails]]. +
- +
-Rails-Anwendungen lassen sich prima auf dem eigenen Rechner entwickeln und in +
-einem Uberspace ​"​live"​ machenFü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 [[development:​git|git]] ​zu +
-versionieren. +
- +
-===== Projekt anlegen ===== +
- +
-Wir nennen unser Projekt in dieser Demo ''​my-rails-project''​ und legen es in unserem [[system:​home|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 Ausgabendie 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 [[system:​ports|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 nachob 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 [[system:​daemontools|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 +
-[[http://​guides.rubyonrails.org/|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ärtViel +
-Erfolg!+
cool/rails.txt · Zuletzt geändert: 2020/04/14 16:40 von uberspace