Erste Schritte mit Rails

Nachdem ich mich nun schon ein wenig umgesehen und auch schon so einiges in Ruby und Rails ausprobiert habe, lese ich noch einmal “Getting Started with Rails“. Damit es nicht langweilig wird, Rails soll ja Spaß machen, die automatische Übersetzung von Google. Die Übersetzungen sind dabei als

blockquote

gekennzeichnet.
Was ist Rails?

Rails ist ein Web-Entwicklungs-Framework in die Sprache Ruby geschrieben. … Rails ist eine Software, rechthaberisch. Das ist, nimmt es an, dass es einen besten Weg, Dinge zu tun, und es ist so konzipiert, dass am besten zu fördern – und in einigen Fällen, um Alternativen zu entmutigen. Wenn Sie lernen, “The Rails Way”

….
Ok, Rails ist also eine rechthaberische Software, die zu Alternativen entmutigt. LOL
Die Prinzipien:

  • DRY – “Don’t Repeat Yourself”
  • Konvention über Konfiguration
  • REST

REST – die Organisation Ihrer Bewerbung um Mittel und Standard- HTTP- Verben ist der schnellste Weg zu gehen

… oder siehe dazu REST Web Services
Die MVC bzw. Model, View, Controller-Architektur
* Isolierung der Geschäftslogik von der Benutzeroberfläche
* einfache Haltung Code DRY
* macht deutlich, wo verschiedene Arten von Code für einfachere Wartung hin gehören
Modelle

Ein Modell stellt die Informationen (Daten) über den Antrag und die Regeln zu manipulieren, dass die Daten.

Meist wird eine Tabelle der DB einem Modell entsprechen und den Großteil der Geschäftslogik der Anwendung enthalten.

Views

2.1.2 Aufrufe
Views stellen die Benutzeroberfläche Ihrer Anwendung. In Rails sind Ansichten oft HTML -Dateien mit eingebetteten Ruby-Code, der Daten übernimmt Aufgaben im Zusammenhang ausschließlich auf die Präsentation der. Aufrufe Griff die Aufgabe der Bereitstellung von Daten an den Web-Browser oder ein anderes Tool, das Ihre Anwendung wird verwendet, um Anfragen aus.

Ok, also in Rails sind Ansichten oft HTML-Dateien und Aufrufe Griff die Aufgabe der Bearbeitung von Daten an den Web-Browser … ja, das war mir von vornherein klar, ich habe verstanden, aber jetzt wird es kompliziert und klebrig:
Controller

Controller können den “Klebstoff” zwischen den Modellen und Ansichten. In Rails, …

sind Controller zuständig für die Bearbeitung der eingehenden Anfragen aus dem Web-Browser und die Modelle für die Abfrage und Weitergabe der Daten an die Views für Präsentation.
Die Komponenten von Rails
Schade, ich hätte mir eine Aktions-Aussicht oder ähnliches erwartet, aber der Übersetzer streikt:
* Action Controller
* Action View
* Active Record
* Action Mailer
* Active Resource
* Railties
* Active Support
Action Controller – verwaltet die Controller; eingehende Anfragen werden verarbeitet, Parameter werden extrahiert, und weiter gereicht …

.., Extrakte Parameter und verschickt sie gegen das beabsichtigte Vorgehen.

Session-Management, Template-Rendering und redirect-Management sind hier angesiedelt.

Action View – zum Verwalten und Rendern von Vorlagen
Active Record – die Basis der Modelle, sorgt für Datenbank Unabhängigkeit, CRUD -Funktionalität und erweiterte Funktionen.
Ach ja, nicht zu vergessen:

und die Fähigkeit, andere beziehen sich auf ein Modell, unter anderen Diensten.

Action Mailer – für E-Mails Dienste …
Active Resource – implementiert eine Möglichkeit, um Web-basierte Ressourcen auf lokale Objekte über CRUD Semantik abzubilden.

Railties

Railties ist der Kern Rails-Code, der neue Rails-Anwendungen und Leime die verschiedenen Frameworks zusammen in einer Rails-Anwendung baut.

Jetzt ist es offenkundig, um welchen Klebstoff es oben ging, um Leim. LOL
Active Support – Sammlung von Utility-Klassen und Standard-Ruby-Erweiterungen …
natürlich

dass in den Schienen eingesetzt werden, …

REST

Die Gründung der REST-Architektur wird allgemein als, werden Roy Fielding Doktorarbeit Baustile und die Gestaltung von Netzwerk-basierten Software-Architekturen. Glücklicherweise müssen Sie nicht lesen,….

Bis jetzt war es recht unterhaltsam, aber nun wechsle ich doch lieber wieder zur Originalversion, denn die Code-Zeilen werden – das ist ja zu langweilig – leider auch nicht nach Deutsch übersetzt.

Shebang, #! und bangbang, !! haben wenig mit g*!, grinsbang und peng peng zu tun

Zu peng peng habe ich mir schon einiges notiert und shebanging ist mir schon lange gut geläufig, nur wusste ich nicht, dass man es so nennt. Ok, jetzt weiß ich es, brauche nie mehr Programmaufruf mit Raute und Rufzeichen sagen, und zitiere dazu gleich aus der Wikipedia Shebang

Shebang (auch Magic Line) bezeichnet bei unixoiden Betriebssystemen die Zeichenkombination #! am Anfang eines Skript-Programms. Die Markierung führt dazu, dass das folgende Kommando mitsamt aller angegebenen Argumente beim Aufruf des Programms ausgeführt wird. Der Dateiname wird dann als weiteres Argument übergeben. Andere Betriebssysteme – beispielsweise Microsoft Windows – nutzen die Technik nicht. Nur bei speziellen Umgebungen, wie dem Common Gateway Interface im Apache HTTP Server, spielt die Shebang-Konstruktion auf diesen Systemen eine Rolle…..

Sicherheit geht vor

das weiß doch jeder Tor. Manche pflegen angeblich ihr ganzes Leben lang nichts anderes zu tun, als sich für alle Fälle zu rüsten. Wenn sie es endlich geschafft haben, rafft sie der Tod wegen Altersschwäche hinweg, denn er allein ist jedem Leben sicher. Natürlich kann man um eine Wohnung eine nicht-chinesische Mauer aufziehen, einen Limes und dahinter einen Wassergraben und dann einen eisernen Vorhang… Die Tür muss richtig verankert sein, aber dann machen vielleicht 10 elektronische und 5 mechanische Schlösser einen Sinn. Auch Verschlüsselung der eigenen Daten und womöglich der gesamten Festplatte am persönlichen Rechner kann unter Umständen sogar sinnvoll sein.
Dumm ist nur, wenn sie die Wohnung nicht mehr verlassen können, vielleicht aus Angst, dass sie selbst nicht mehr hinein kommen, weil sie irgend ein Kennwort (-zeichen) vergessen haben, oder weil es einfach viel zu lange dauert und zu mühsam ist. Wozu also der ganze Aufwand? Damit der Nachbar nicht sieht wie dreckig es in ihrem Wohnzimmer ist? Ach, das ist doch keine Schande, schließlich hatten sie doch viel zu tun, mit den ganzen Sicherheitsmaßnahmen.
Es gibt viele törichte Ideen und auch viele Dummheiten. Der umgekehrte Fall ist auch so eine, nämlich wenn Sie eine versperrbare Haustür haben, aber den Schlüssel weg werfen und die Tür weit offen stehen lassen, ähnliches habe ich z.B. bei Ubuntu 10.4 gesehen. Aber der Standardhauptbenutzer kann dann ja einen Schlosser kommen lassen, der ihm ein neues Schloss einbaut. Tödeldida, dödeldidi – verschlüssel nur den Schlüssel nie. LOL
Wie dem auch sei, sicher ist sicher, sprach der körperlich gesunde, militante Nichtraucher, stieg in sein Auto und tötet einen unschuldigen Passanten. Der Satz musste sein, um die statistisch häufigste Todesursache durch Fremdeinwirkung erwähnt zu haben, wenn es schon um Sicherheit geht. Ich bin für ein Pickerl auf jedes Fahrzeug: “Achtung die Benutzung kann tödlich enden”. Aber noch richtiger wäre eine Warnung bei der Geburt, denn Leben kann nicht nur unsicher und tödlich sein, sondern es endet immer und ausnahmslos mit dem Tod. Also aufpassen, denn: “Leben kann nicht nur unsicher und tödlich sein – sondern, Leben ist tödlich”! Das, und nur das, ist wirklich sicher.
Liebe Grüße vom Transparenzheini mit gesundem Vertrauen, Helmeloh

Ruby! Bock auf Block?

Statt For-Schleifen verwendet man in Ruby gern Blöcke, also Codeabschnitte, die nach bestimmten Vorgaben, etwa für alle Elemente einer Datenstruktur, ausgeführt werden. Sie können unter anderem benutzt werden, um Strukturen auszuwerten oder zu manipulieren. Ausdrücke wie

array.each do |element|
...
end

bzw.
array.each { |element| ... }

auf Ruby (Programmiersprache) geht’s weiter mit

iterieren über array, wobei dem Block in jedem Iterationsschritt ein Visitor für das aktuelle Element mit der Bezeichnung element übergeben wird. Mit Blöcken werden elegante Konstruktionen wie 5.times{ … } oder array.sort_by{|element| element.size} möglich.

Iteratoren, also Methoden, die Blöcke aufrufen, können auch selbst definiert werden:

def mach_zweimal
yield
yield
end

mach_zweimal { puts “Block aufgerufen!” }

Ausgabe:

Block aufgerufen!
Block aufgerufen!

So ähnlich steht es auch in den Ruby Einführungen, aber ich zitierte aus Wikipdedia, weil mir das “Duck Typing”-Beispiel dort so gut gefällt:

Eine graue Ente macht: Quak!
Eine dicke Kuh macht: Muuuh!

😉

Ich dachte schon das war’s, bis ich Block Closures in Ruby und # CLOSURES IN RUBY fand.

Wichtig ist jedenfalls und das gilt auch für Blöcke, dass alles ein Objekt ist in Ruby. Everything is an object in Ruby heißt es auch in “Ruby on Rails – Part 2: Just Enough Ruby”:
[youtube]https://www.youtube.com/watch?v=UCB57Npj9U0[/youtube]

PostgreSQL Handbuch in Deutsch

Es ist für mich doch viel leichter zu lesen, außerdem ist die Dokumentation sehr übersichtlich, siehe PostgreSQL: Das offizielle Handbuch von Peter Eisentraut. Auf der Seite befinden sich auch Links zum online lesen, ich zitiere:

Lesen

Mit freundlicher Genehmigung des Verlages kann das gesamte Buch sowohl in HTML-Form als auch in PDF-Form online gelesen werden.

* HTML-Version zum Lesen online (einzelne Dateien)
* HTML-Version zum Herunterladen (gepackte Datei, 835 kB)
* PDF-Version zum Herunterladen (gepackt, 4,1 MB)

Kaufen

… kann man das Buch am besten gleich beim Verlag. Übrigens: ein Teil der Verkaufserlöse wird dem PostgreSQL-Projekt zugute fließen.

Die Aktualisierungen und Änderungen, besonders der 9.0 beta Version lesen sich dann auch in Englisch leichter auf Documentation. Momentan wundere ich mich gerade über die Datentypen in pg. Mit der InnoDB von MySQL hatte ich ja immer wieder Problemchen (vermutlich meine Fehler) und jetzt sehe ich mir nach BASE PostgreSQL genauer an. Bis jetzt bin ich sehr beeindruckt von Datentypen, Funktionen, Operatoren und Transaktionsisolation … und nicht zuletzt ist auch die DBI Schnittstelle Ruby/DBI – Direct database access layer for Ruby interessant für mich.
Active Record (Migrations, Validations and Callbacks, Associations, Query Interface) von Rails ist als ORM natürlich eine ganz andere Geschichte, die mich ebenfalls gerade fasziniert. Durch die DB-Abstraktion wird man dabei von der DB selbst, sei es nun MySQL, PostgreSQL, SQLite, Oracle, SQLServer oder DB2, unabhängig.