Rails verwendet drei übergeordnete Prinzipien:
Durch die Konsequente Einhaltung der vorgegebenen Konventionen ist das Framework in der Lage viel zu "wissen". Wenn der Entwickler sich beispielsweise an die Konventionen zur Dateiablage und Namensgebung hält weiß das Framework wo es bestimmte Dateien findet und wie sie heißen. Der Entwickler muss diese Informationen nicht in einer Konfiguration hinterlegen.
Die aus anderen Sprachen bekannte MVC-Struktur folgt auch in Rails der klassischen Einteilung in Model, View und Controller.
Eine Reihe von Konventionen in Rails:
require "klasse_aus_lib_verzeichnis"
. Das gestattet die Ablage von eigenen Bibliotheken unabhängig von Rails.Zwei praktische Beispiele für die Umsetzung des DRY-Prinzips:
Zum Beispiel der Application-Helper in app/helpers/application_helper.rb
# Methods added to this helper will be available to all # templates in the application. module ApplicationHelper def german_time(time) time.strftime("%d.%m.%Y %H:%M") end end
Seit Rails 2.0 werden automatisch alle Helper-Dateien aus dem Verzeichnis app/helpers geladen. Es spielt daher im Prinzip keine Rolle, in welcher Helper-Datei Sie die Helper-Methoden definieren. Es ist jedoch üblich, Helper-Methoden, die nur für einen bestimmten Controller, z. B. für den Bookmarks-Controller, bestimmt sind, in der Datei bookmarks_helper.rb abzulegen. Helper, die Controller-übergreifend verwendet werden können, werden oft in der Helper-Datei application_helper.rb definiert. Man könnte auch eine Helper-Datei nur für Formatierungshelper, wie z. B. formattings_helpers.rb , erstellen.
Per Konvention mit einem Unterstrich versehene Dateien die Teilbereiche einer View auslagern. Die Partials werden von der View aufgerufen, beim Aufruf wird der Name ohne Unterstrich angegeben.
Das Partial _form.html.erb
kann aufgerufen werden mit:
<%= render :partial => "form" %>
Es können auch Parameter übergeben werden. Zum Beispiel die Ziel-URL eines Formulars:
<% form_for :bookmark, :url => url do |f| %>
<%= render :partial => "form", :locals => {:url => {:action => "create"}} %>
<%= render :partial => "form", :locals => {:url => {:action => "update", :id => @bookmark.id}} %>
Ein weiteres Beispiel mit angepassten Buttons:
<%= submit_tag submit_text %>
<%= render :partial => "form", :locals => {:url => {:action => "create"}, :submit_text => "Neuen Favorit erstellen"} %>
<%= render :partial => "form", :locals => {:url => {:action => "update", :id => @bookmark.id}, :submit_text => "ändern"} %>
Ein Beispiel für Array-Ausgabe:
<li> <%= link_to h(bookmark.title), h(bookmark.url) %> ( <%= link_to "Details", :action => "show", :id => bookmark.id %> | <%= link_to "ändern", :action => "edit", :id => bookmark.id %> | <%= link_to "löschen", {:action => "destroy", :id => bookmark.id}, :confirm => "Wollen Sie diesen Datensatz wirklich löschen?" %> ) </li>
<ul> <%= render :partial => @bookmarks %> </ul>
Die MVC-Struktur wird in Rails über folgende Aufteilung realisiert:
ruby script/console
Als Default wird die Entwicklungsumgebung geladen. Explizite Umgebungen laden mit:
ruby script/console development
ruby script/console test
ruby script/console production
In Rails wird der Ruby-Debugger eingesetzt.
Beim Generieren einer Rails-Applikation wird für die drei Standardumgebungen im Verzeichnis "log" eine eigene Logdatei angelegt:
Es wird immer in die zu der Umgebung gehörende Logdatei geschrieben, in der der Server gestartet wurde.
Rails protokolliert in den Logdateien sehr viele Informationen, wie z. B., welche URL aufgerufen wurde, welcher Controller und welche Action ausgeführt wurden oder welche SQL-Befehle ausgeführt wurden.
Mit Hilfe des Objekts logger kann man eigene Einträge in der Logdatei vornehmen. Drei Methoden:
Um allgemeine Informationen zu protokollieren.
Um Warnungen, dass z. B. etwas nicht funktioniert wie erwartet, zu protokollieren.
Um Variablen auszugeben, die der Fehlersuche dienen können. Standardmäßig wird dieser Befehl in der Produktionsumgebung ignoriert, d. h., es wird kein Eintrag in der Logdatei vorgenommen.
Aufruf:
logger.debug("User-id = #{user.id}")
Es ist jetzt <%= Time.now %>. Und so .. <% 3.times do %> Ho! <% end %>
Rails stellt eine Reihe von Helper-Methoden, die wir in den View Dateien benutzen können:
<%= distance_of_time_in_words(time.now, Time.now + 33, true) %>
<%= debug(params) %>
<%= link_to "kommentieren", :action => "add_comment" %>
<%= stylesheet_link_tag "schedule", :media => "all" %>
<%= pagination_links(@user_pages) %>
Formatvorlagen(templates) und wo sie stehen. TODO ..
Copyright © 2024