Ruby on Rails: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Keine Bearbeitungszusammenfassung
Zeile 44: Zeile 44:
Um einen neuen Controller und View zu erstellen kann das ''generate'' Skript verwendet werden.
Um einen neuen Controller und View zu erstellen kann das ''generate'' Skript verwendet werden.


''ruby script/generate controller ControllerName ActionName''
<source lang="bash">
  ruby script/generate controller ControllerName ActionName
</source>


Nun werden die Dateien für den Controller und die dazugehörigen View erzeugt.
Nun werden die Dateien für den Controller und die dazugehörigen View erzeugt.
Zeile 52: Zeile 54:
Für die Erstellung eines Models wird ebenfalls das '<code>generate</code>-Skript verwendet.
Für die Erstellung eines Models wird ebenfalls das '<code>generate</code>-Skript verwendet.


'<code>ruby script/generate model ModelName</code>
<source lang="bash">
  ruby script/generate model ModelName
</source>


Mit diesem Befehl wird die Datei für das Model und die Migration Datei zu Erstellung der Datenbank erzeugt.
Mit diesem Befehl wird die Datei für das Model und die Migration Datei zu Erstellung der Datenbank erzeugt.
Zeile 67: Zeile 71:
Es gibt von Rails bereitgestellte Ruby Funktionen um Tags zu erzeugen. Das einfachste Beispiel ist die erstellung eines Links :
Es gibt von Rails bereitgestellte Ruby Funktionen um Tags zu erzeugen. Das einfachste Beispiel ist die erstellung eines Links :


<%= link_to "Login" , :action => :login %>
<source lang="ruby">
  <%= link_to "Login" , :action => :login %>
</source>


Das Ergebnis dieses Aufrufs im HTML sieht wie folgt aus:
Das Ergebnis dieses Aufrufs im HTML sieht wie folgt aus:


<a href="/webshop/login">Login</a>
<source lang="html4strict">
  <a href="/webshop/login">Login</a>
</source>


=Wozu dient das Model?=
=Wozu dient das Model?=
Zeile 79: Zeile 87:
Der Standardfall ist, dass der Zugriff auf eine Tabelle in einer Datenbank durch ein Model realisiert wird.  Bei der Erstellung eines solchen Models ist es Konvention, dass die Tabelle im Plural und das Model und die Klasse für die Tabelle im Singular erzeugt werden. Es werden mehrere Datenbanken unterstützt, eine genaue Liste ist auf der Wikipedia Seite zu finden. Die Daten für den Datenbankzugriff sind in der Datei ''config/database.yml'' gespeichert. Mit dem Rakebefehl
Der Standardfall ist, dass der Zugriff auf eine Tabelle in einer Datenbank durch ein Model realisiert wird.  Bei der Erstellung eines solchen Models ist es Konvention, dass die Tabelle im Plural und das Model und die Klasse für die Tabelle im Singular erzeugt werden. Es werden mehrere Datenbanken unterstützt, eine genaue Liste ist auf der Wikipedia Seite zu finden. Die Daten für den Datenbankzugriff sind in der Datei ''config/database.yml'' gespeichert. Mit dem Rakebefehl


<code>rake db::create</code>
<source lang="bash">
  rake db::create
</source>


kann die Datenbank erstellt werden.  
kann die Datenbank erstellt werden.  


In der Migration-Datei kann das Create Script für die Tabelle erstellt werden. Ein Beispiel für solch eine Migration-Datei wäre:
In der Migration-Datei kann das Create Script für die Tabelle erstellt werden. Ein Beispiel für solch eine Migration-Datei wäre:
<source lang="ruby">
   class CreateCarts < ActiveRecord::Migration
   class CreateCarts < ActiveRecord::Migration
     def self.up
     def self.up
Zeile 97: Zeile 109:
     end
     end
   end  
   end  
</source>


Um die Create Scripts in SQL umzusetzen und auf der Tabelle auszuführen dient der Rakebefehl
Um die Create Scripts in SQL umzusetzen und auf der Tabelle auszuführen dient der Rakebefehl


<code>rake db::migrate</code>
<source lang="bash">
  rake db::migrate
</source>


Die Klasse von einer Tabelle wird von der Klasse ActiveRecord::Base abgeleitet. Diese ActiveRecord::Base Klasse enthält und erzeugt automatisch Funktionen, um mit der Tabelle ähnlich arbeiten zu können wie mit einem Objekt. Die erstellten Funktionen sind:
Die Klasse von einer Tabelle wird von der Klasse ActiveRecord::Base abgeleitet. Diese ActiveRecord::Base Klasse enthält und erzeugt automatisch Funktionen, um mit der Tabelle ähnlich arbeiten zu können wie mit einem Objekt. Die erstellten Funktionen sind:
Zeile 114: Zeile 129:


== Verwendung von Postgres-Datenbanken ==
== Verwendung von Postgres-Datenbanken ==
gem install postgres -r --  --with-pgsql-dir=${POSTGRES_DIR}  
<source lang="bash">
  gem install postgres -r --  --with-pgsql-dir=${POSTGRES_DIR}  
</source>


== Einbinden von Ruby-on_rails-Anwendungen in Apache ==
== Einbinden von Ruby-on_rails-Anwendungen in Apache ==


<source lang="bash">
   gem install passenger
   gem install passenger
   ${RUBYONRAILS_DIR}/bin/passenger-install-apache2-module
   ${RUBYONRAILS_DIR}/bin/passenger-install-apache2-module
</source>


In Apache <code>httpd.conf</code>:
In Apache <code>httpd.conf</code>:


<source lang="apache">
<source lang="apache">
# ... durch IP-Adresse oder Namen eines virtuellen Apache-Servers ersetze
  # ... durch IP-Adresse oder Namen eines virtuellen Apache-Servers ersetze
<VirtualHost ...:80>
  <VirtualHost ...:80>
   
   
  # ... durch Namen des virtuellen Servers ersetzen
    # ... durch Namen des virtuellen Servers ersetzen
  ServerName ....
    ServerName ....
   
   
  # ... durch Verzeichnis ersetzen, in dem die Rails-Anwedungen liegen
    # ... durch Verzeichnis ersetzen, in dem die Rails-Anwedungen liegen
  # ::: durch den Namen einer Rails-Anwendung ersetzen
    # ::: durch den Namen einer Rails-Anwendung ersetzen
  DocumentRoot .../:::/public
    DocumentRoot .../:::/public
  <Directory .../:::/public>
    <Directory .../:::/public>
    Options All MultiViews FollowSymLinks
      Options All MultiViews FollowSymLinks
    AllowOverride All
      AllowOverride All
    Order allow,deny
      Order allow,deny
    Allow from all
      Allow from all
  </Directory>
    </Directory>
</VirtualHost>
  </VirtualHost>
</source>
</source>



Version vom 4. Dezember 2008, 18:05 Uhr

Definition

(Ruby on) Rails ist ein freies, leichtgewichtiges Web-Framework für die Programmiersprache Ruby. Es erlaubt die schnelle Entwicklung von datenbank-gestützten Web-Applikatinen nach dem Model-View-Controller-Paradigma.

Philosophie

Convention over Configuration: Es muss nur das konfiguriert werden, was nicht den konventionen enspricht.

Don't repeat yourself: Redundanz soll vermieden werden. So ist es zum Beispiel möglich das Aussehen der Seite in einem sog. Layout zu definieren. Dies geschieht dann an nur einer Stelle.

Bemerkungen

Ruby on Rails wurde von David Heinemeier Hansson bei der Firma 37signals entwickelt. Viele Web 2.0 Sites bzw. Anwendungen basieren auf Ruby on Rails.

Projekt erzeugen:

rails --database DBTYPE ApplicationName

Erzeugte Verzeichnisse und Dateien:

  • app - Enthält Komponenten der Application
    • controllers - Controller klassen, bearbeitet Benutzer anfragen
    • helpers - Hilfsklassen die zur unterstüzung dienen
    • models - Datenmodel und Schnittstelle zur Datenbank
    • views - Templates, liefert das Ergebnis an den Benutzer zurück
  • db - Datenbankklassen
  • lib - Ordner fuer zusätliche bibliotheken
  • public - Ordner statische files
  • test - Ordner fuer automatische tests
  • vendor - Ordner fuer 3rd party libs
  • config - Konfigurationsdateien
  • doc - Zielordner fuer die von RubyDoc generierte Dokumentation
  • log - Error logs werden hier gespeichert
  • script - Tools fuer rails (z.b. server start)
  • tmp - Temporäre dateien
  • README
  • Rakefile - Ruby Make, ein werkzeug zum erstellen, packen und testen von rails code

Controller und View anlegen

Um einen neuen Controller und View zu erstellen kann das generate Skript verwendet werden.

  ruby script/generate controller ControllerName ActionName

Nun werden die Dateien für den Controller und die dazugehörigen View erzeugt.

Model anlegen

Für die Erstellung eines Models wird ebenfalls das 'generate-Skript verwendet.

  ruby script/generate model ModelName

Mit diesem Befehl wird die Datei für das Model und die Migration Datei zu Erstellung der Datenbank erzeugt.

Wozu dient eine View?

Die View ist die Schnittstelle zum Benutzer und wird in diesem Fall mit HTML welches in einem Webbrowser angezeigt wird, realisiert. Alle Views sind im Verzeichnis app/view/. Dort liegen die zu den einzelnen Actions gehörenden Views in Unterordnern mit dem Namen des Controllers. Vor der Version 2.0 war die Dateiendung von views .rhtml, aktuell ist allerdings .html.erb. Um ein allgemeines Design zu ermöglichen kann mit sogenannten Layouts gearbeitet werden. So können Elemente wie Footer, Header und Navigation die Seitenübergreifend gleich bleiben ausgelagert werden.

In den View Dateien kann der Entwickler mit Ruby dynamische Serverseitige erzeugen. Die Tags <% %> und <%= %> werden verwendet um Ruby-Code ausführen zu lassen. Die erste Variante wertet nur aus, die Zweite weret aus und setzt die zurück gegebenen Werte in die HTML seite.

Es gibt von Rails bereitgestellte Ruby Funktionen um Tags zu erzeugen. Das einfachste Beispiel ist die erstellung eines Links :

  <%= link_to "Login" , :action => :login %>

Das Ergebnis dieses Aufrufs im HTML sieht wie folgt aus:

  <a href="/webshop/login">Login</a>

Wozu dient das Model?

Das Model dient im Allgemeinen zum Zugriff auf externe Daten, wie z.B. Datenbanken und Dateien, um sie in einem Ruby on Rails Projekt verwenden zu können. Alle Models sind in dem Verzeichnis /app/model abgelegt.

Der Standardfall ist, dass der Zugriff auf eine Tabelle in einer Datenbank durch ein Model realisiert wird. Bei der Erstellung eines solchen Models ist es Konvention, dass die Tabelle im Plural und das Model und die Klasse für die Tabelle im Singular erzeugt werden. Es werden mehrere Datenbanken unterstützt, eine genaue Liste ist auf der Wikipedia Seite zu finden. Die Daten für den Datenbankzugriff sind in der Datei config/database.yml gespeichert. Mit dem Rakebefehl

  rake db::create

kann die Datenbank erstellt werden.

In der Migration-Datei kann das Create Script für die Tabelle erstellt werden. Ein Beispiel für solch eine Migration-Datei wäre:

  class CreateCarts < ActiveRecord::Migration
    def self.up
      create_table :carts do |t|
        t.column :customer_id, :integer
        t.column :product_id, :integer
        t.column :quantity, :integer
        t.timestamps
      end
    end
    def self.down
      drop_table :carts
    end
  end

Um die Create Scripts in SQL umzusetzen und auf der Tabelle auszuführen dient der Rakebefehl

  rake db::migrate

Die Klasse von einer Tabelle wird von der Klasse ActiveRecord::Base abgeleitet. Diese ActiveRecord::Base Klasse enthält und erzeugt automatisch Funktionen, um mit der Tabelle ähnlich arbeiten zu können wie mit einem Objekt. Die erstellten Funktionen sind:

  • Für jede Spalte eine Funktion zum Zugriff und Setzen des Wertes z.B. Cart.quantity.
  • Eine save (create), update und destroy, delete (drop) Funktion für die Tabelle.
  • find(ID) und find(.all) zum Suchen in der Tabelle.

Mit Hilfe der Parameter belongs_to :<Tabelle_im_Singular>, has_one :<Tabelle_im_Singular> (1:1), has_many :<Tabelle_im_Plural> 1:n) und has_and_belongs_to_many  :<Tabelle_im_Plural> (n:n) können die Relationen (Fremdschlüsselbeziehungen) in einer Datenbank auf das Model abgebildet werden. Belongs_to muss in das Model der Tabelle eingefügt werden, in der der Fremdschlüssels steht. Die anderen zwei Befehle has_one und has_many geben in dem Model, auf das sich der Fremdschlüssel bezieht, an, wie oft es in der Relation vorkommen darf. Has_and_belongs_to_many muss in beide Models gleich eingetragen werden. Wichig hierbei ist das beachtet wird, wann die Tabelle im Singular oder wann im Plural geschrieben werden muss.

Module

Für Ruby on Rails gibt es eine Reihe von Modulen, die die Funktionalität erweitern.

Verwendung von Postgres-Datenbanken

  gem install postgres -r --  --with-pgsql-dir=${POSTGRES_DIR}

Einbinden von Ruby-on_rails-Anwendungen in Apache

  gem install passenger
  ${RUBYONRAILS_DIR}/bin/passenger-install-apache2-module

In Apache httpd.conf:

  # ... durch IP-Adresse oder Namen eines virtuellen Apache-Servers ersetze
  <VirtualHost ...:80>
 
    # ... durch Namen des virtuellen Servers ersetzen
    ServerName ....
 
    # ... durch Verzeichnis ersetzen, in dem die Rails-Anwedungen liegen
    # ::: durch den Namen einer Rails-Anwendung ersetzen
    DocumentRoot .../:::/public
    <Directory .../:::/public>
      Options All MultiViews FollowSymLinks
      AllowOverride All
      Order allow,deny
      Allow from all
    </Directory>
  </VirtualHost>

Quellen

Links

Seiten die in Ruby on Rails entwickelt wurden:


Dieser Artikel ist GlossarWiki-konform.
In diesem Artikel sollten die Quellenangaben überarbeitet werden.
Bitte die Regeln der GlossarWiki-Quellenformatierung beachten.