SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Ruby on Rails

                       BarCamp Klagenfurt
                       7. / 8. Februar 2009

                                            Hermann Stern
                                       hstern@derstern.at
                                   http://twitter.com/hstern
     Hermann Stern                          www.derstern.at
07.02.2009                                                     1
Inhalt
     Ruby? on Rails
     Ruby on Rails?
     Konzepte
     Installation
     Entwicklungsumgebung
     Beispiel
             BarCamp Lectures
     Und jetzt?

     Hermann Stern              www.derstern.at
07.02.2009                                        2
Ruby? on Rails (1/3)
     http://www.ruby-lang.org/
     Objekt-orientierte Interpretersprache
             ruby filename.rb
     Alles ist ein Objekt
             Zahl 1 ist eine Instanz der Klasse Fixnum
             Daher keine Funktionen, nur Methoden
     Dynamisch / Weakly typed
             Wechsel des Typs einer Variablen möglich
     Interactive Ruby Shell
             http://tryruby.hobix.com/
     Hermann Stern                               www.derstern.at
07.02.2009                                                         3
Ruby? on Rails (2/3)
     Syntax
             Anweisung endet am Ende der Zeile, kein ; notwendig
             Variablen und Methoden klein (order_status)
             Klassen groß (Registration)
     Variablen:
             lokal (variable)
             global ($variable)
             Instanzvariablen (@variable): Attribute von Objekten
             Klassenvariablen (@@variable): Alle Instanzen der
             Klassen teilen sich die Variablen

             Typen: String, Fixnum, Float, Array etc.
     Hermann Stern                                      www.derstern.at
07.02.2009                                                                4
Ruby? on Rails (3/3)
     # Kommentar einzeilig
     =begin
             Kommentar mehrzeilig
     =end
     Variablen werden nicht deklariert
             nehmen den Datentyp des zugewiesenen Wertes an
             a=2
             text = „mein Text“
             text = String.new(„mein Text“) geht aber auch
     Methoden
             text.length()

     RoR generiert viel Code, von dem man dann weiter
     arbeiten kann….
     Hermann Stern                                 www.derstern.at
07.02.2009                                                           5
Ruby on Rails? (1/2)
     Framework für datenbankgestützte
     Webapplikationen
     In Ruby geschrieben
     DRY - quot;Don’t Repeat Yourselfquot;
     Convention Over Configuration
             Alles hat (s)einen fixen Platz
             HTML Files, Bilder, JS, etc.
             Zugriff auf Daten, Pfade, Links normiert
     Opinionated
             „there is a best way to do something“

     Hermann Stern                                www.derstern.at
07.02.2009                                                          6
Ruby on Rails? (2/2)
     Model View Controller (MVC)
             Modell (Daten, meist in Datenbanktabellen)
               Action Record
             View (User Interface, HTML mit Ruby Code)
               Action View
             Controller (verbinden Modell und View)
               Action Controller
     Wird alles als Ruby Sourcecode generiert
     Start mit Datenmodell, Controller und View
     setzen dann darauf auf
     Hermann Stern                              www.derstern.at
07.02.2009                                                        7
Konzepte (1/2)
     Generatoren
             Modelle
               CRUD (Create Retrieve Update Delete)
             Controller
             Views
             etc.
             Scaffolds
               Modell, View und Controller
     Rake tasks
             db:update, db:create; rails:update etc.

     Hermann Stern                                www.derstern.at
07.02.2009                                                          8
Konzepte (2/2)
     Action Record Naming Convention
             Klasse: Einzahl in Englisch (Student)
             Tabellen: Mehrzahl in Englisch (students)
             holt sich RoR aus einem Wörterbuch)
                  • Person => people
                  • Student => students
     Mapping von URLs auf Methoden in Controllern
     /controller class name/controller method name
             http://localhost:3001/lectures
             http://localhost:3001/lectures/new
             http://localhost:3001/lectures/show/1


     Hermann Stern                                   www.derstern.at
07.02.2009                                                             9
Installation
     http://rubyonrails.org/download
     Ruby (1.8.7)
     RubyGems (1.3.1)
             Ruby package manager
             ähnlich wie apt-get
     Rails (2.2.2)
             gem install rails
             Win / MySQL: gem install rails -v 2.1.0
     Oder Komplettpakete (Instant Rails etc.)

     Hermann Stern                                www.derstern.at
07.02.2009                                                          10
Entwicklungsumgebungen
     Aptana RadRails
             Allein oder als Eclipse Plugin
             http://www.aptana.com/rails/
       EasyEclipse http://www.easyeclipse.org/

     NetBeans for Ruby
             http://www.netbeans.org/

     Für Puristen:
             Command line & Text Editor
             TextMate (OSX), VIM for Rails, Emacs for Rails

     Hermann Stern                              www.derstern.at
07.02.2009                                                        11
Beispiel: BarCamp Lectures
        Umgebung:
             EasyEclipse
             MySQL




     Hermann Stern           www.derstern.at
07.02.2009                                     12
Beispiel: Neues Projekt
     Eclipse | Neues Rails Projekt anlegen
             WEBrick
             Mongrel




     Hermann Stern                     www.derstern.at
07.02.2009                                               13
Beispiel: Verzeichnisse
     Alles hat seinen fixen Platz
             app (Applikation)
               controllers
               helpers
               models
               views
             config (Konfiguration)
             public (HTML, JS, Bilder)




     Hermann Stern                       www.derstern.at
07.02.2009                                                 14
Beispiel: Webserver starten
     Direkt von Eclipse aus
     http://localhost:3010/

     TO Dos auf Startseite
             Datenbank erstellen
             Controller
             Modelle und Views
             Default Routen



     Hermann Stern                 www.derstern.at
07.02.2009                                           15
Beispiel: Ruby on Rails Startseite




     Hermann Stern               www.derstern.at
07.02.2009                                         16
Beispiel: Datenbank konfigurieren
     config/database.yml
             Standard: sqlite3
             MySQL, PostgreSQL
     Drei Umgebungen
             Entwicklung (kein Cache, bessere
             Fehlermeldungen, keine Emails) default
             Produktion (Cache aktiv)
             Test (für Testklassen)
     config/environments/<NAME>.rb
     Definition eigener Umgebungen möglich
     Hermann Stern                              www.derstern.at
07.02.2009                                                        17
Beispiel: Datenbank anlegen




     Hermann Stern            www.derstern.at
07.02.2009                                      18
Beispiel: Controlleranlegen
     Startseite der Applikation
     Name des Controllers (home) Aktion (index)

             Name des Controllers (home) Aktion (index)
     Angelegte Dateien
             controllers/home_controller.rb
             helpers/home_helper.rb
             views/home/index.html.erb



     Hermann Stern                              www.derstern.at
07.02.2009                                                        19
Beispiel: Modelle und Views anlegen (1/2)
     Lecture
              Name, Lecturer
              script/generate scaffold Lecture name:string
             lecturer:string



     Registration
              Firstname, Lastname, Email
              script/generate scaffold Registration
             surname:string lastname:string email:string

     Hermann Stern                                www.derstern.at
07.02.2009                                                          20
Beispiel: Modelle und Views anlegen (2/2)
     Erstellte Dateien
             controllers/
                lectures_controller.rb
             helpers/
                lectures_helper.rb
             models/
                lecture.rb
             views/lectures/
                *.html.erb
             db/migrate/
                20090206204429_create..
     Hermann Stern                        www.derstern.at
07.02.2009                                                  21
Beispiel: controllers/lectures_controller.rb




     http://localhost:3001/lectures(.xml)
     Hermann Stern                          www.derstern.at
07.02.2009                                                    22
Beispiel: models/lecture.rb



     Noch leer, da keine „Sonderwünsche“
     Später
       Relationen zu anderen Tabellen
          has_many, belongs_to
       Validierungen
          Wert aus einer Liste, Länge, Typ etc.

     Hermann Stern                     www.derstern.at
07.02.2009                                               23
Beispiel: views/lectures/index.html.erb




     Hermann Stern               www.derstern.at
07.02.2009                                         24
Beispiel: db/migrate/2009..lectures.rb




     Speichern der Änderungen in die Datenbank
             rake db:migrate


     Hermann Stern                       www.derstern.at
07.02.2009                                                 25
Beispiel: db/migrate/2009..lectures.rb




     „Normale Tabellen“
             Inhalt kann selber editieren werden
     Automatisch erstellte Felder
             created_at
             updated_at

     Wieder „gratis“ Funktionalität ohne Mehrarbeit

     Hermann Stern                                 www.derstern.at
07.02.2009                                                           26
Beispiel: Default Routen (1/2)
     Pfade durch die Applikation
     Neue Startseite setzen
             public/index.html löschen
             config/routes.rb editieren


map.root :controller => quot;homequot;
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format‚


     Hermann Stern                        www.derstern.at
07.02.2009                                                  27
Beispiel: Default Routen (2/2)
     views/home/index.html.erb anpassen

     <h1>BarCamp Anmeldungen</h1>
     <p>
     Link zu den Sessions
     </p>
     <%= link_to quot;Lecturesquot;, lectures_path %>

             (lectures_path wurde automatisch erstellt)

     Hermann Stern                                www.derstern.at
07.02.2009                                                          28
Beispiel: Screenshots (1/3)
                        http://localhost:3001/




     Hermann Stern                    www.derstern.at
07.02.2009                                              29
Beispiel: Screenshots (2/3)




     Hermann Stern            www.derstern.at
07.02.2009                                      30
Beispiel: Screenshots (3/3)




     Hermann Stern            www.derstern.at
07.02.2009                                      31
Beispiel: So gehts weiter…
     Anpassen der HTML Templates
     Registration durch Scaffold hinzufügen
     Tabellen verbinden
             belongs to, has many, etc
             class Lecture < ActiveRecord::Base
                    has_many :Registrations
             end
     Weitere Methoden verfügbar
             @registrations = Lecture.find_all


     Hermann Stern                                www.derstern.at
07.02.2009                                                          32
Und jetzt?
     http://en.wikibooks.org/wiki/Ruby_on_Rails
     http://en.wikibooks.org/wiki/Ruby
     http://openbook.galileocomputing.de/ruby_on_rails/

     Ausprobieren, Learning by Doing
     Kreativ sein
             http://www.peepalot.com
     Online stellen
             Wenige Provider bieten WEBrick oder Mongrel
             Es gibt auch ein Apache Modul für RoR (mod_rails)


     Hermann Stern                                     www.derstern.at
07.02.2009                                                               33
Hermann Stern   www.derstern.at
07.02.2009                             34

Contenu connexe

En vedette

Tarifario Modelo 2010-2011
Tarifario Modelo 2010-2011Tarifario Modelo 2010-2011
Tarifario Modelo 2010-2011bilove
 
Progetto Radiolina
Progetto RadiolinaProgetto Radiolina
Progetto Radiolinapaola iasci
 
HL7 DFDL with WebSphere Message Broker
HL7 DFDL with WebSphere Message BrokerHL7 DFDL with WebSphere Message Broker
HL7 DFDL with WebSphere Message BrokerAnt Phillips
 
PRESENTACIÓN -ANÁLISIS DE LA IMPLANTACIÓN DE PROCESOS DE DIRECCIÓN ESTRATÉGIC...
PRESENTACIÓN -ANÁLISIS DE LA IMPLANTACIÓN DE PROCESOS DE DIRECCIÓN ESTRATÉGIC...PRESENTACIÓN -ANÁLISIS DE LA IMPLANTACIÓN DE PROCESOS DE DIRECCIÓN ESTRATÉGIC...
PRESENTACIÓN -ANÁLISIS DE LA IMPLANTACIÓN DE PROCESOS DE DIRECCIÓN ESTRATÉGIC...Encarna Aguilera
 
Nuevas extensiones de dominio y Trademark Clearinghouse
Nuevas extensiones de dominio y Trademark ClearinghouseNuevas extensiones de dominio y Trademark Clearinghouse
Nuevas extensiones de dominio y Trademark ClearinghouseNominalia
 
Unser Wasser. Unser Leben - warum VortexPower
Unser Wasser. Unser Leben - warum VortexPower Unser Wasser. Unser Leben - warum VortexPower
Unser Wasser. Unser Leben - warum VortexPower Matthias C. Mend
 
Claves de una estrategia en redes sociales
Claves de una estrategia en redes socialesClaves de una estrategia en redes sociales
Claves de una estrategia en redes socialesTristán Elósegui
 
Curso De Tarot 2
Curso De Tarot 2Curso De Tarot 2
Curso De Tarot 2Juan Carlos
 
Simplified Technical English: How Standardizing Content Saves Translation Cos...
Simplified Technical English: How Standardizing Content Saves Translation Cos...Simplified Technical English: How Standardizing Content Saves Translation Cos...
Simplified Technical English: How Standardizing Content Saves Translation Cos...Scott Abel
 
Multiband Transceivers - [Chapter 7] Multi-mode/Multi-band GSM/GPRS/TDMA/AMP...
Multiband Transceivers - [Chapter 7]  Multi-mode/Multi-band GSM/GPRS/TDMA/AMP...Multiband Transceivers - [Chapter 7]  Multi-mode/Multi-band GSM/GPRS/TDMA/AMP...
Multiband Transceivers - [Chapter 7] Multi-mode/Multi-band GSM/GPRS/TDMA/AMP...Simen Li
 

En vedette (17)

Modelo conceptual de BD
Modelo conceptual de BDModelo conceptual de BD
Modelo conceptual de BD
 
Ganar dinero en Internet con emails
Ganar dinero en Internet con emailsGanar dinero en Internet con emails
Ganar dinero en Internet con emails
 
Comité de Dirección del itdUPM. 19 de diciembre de 2016
Comité de Dirección del itdUPM. 19 de diciembre de 2016Comité de Dirección del itdUPM. 19 de diciembre de 2016
Comité de Dirección del itdUPM. 19 de diciembre de 2016
 
Movie Clips
Movie ClipsMovie Clips
Movie Clips
 
Tarifario Modelo 2010-2011
Tarifario Modelo 2010-2011Tarifario Modelo 2010-2011
Tarifario Modelo 2010-2011
 
Progetto Radiolina
Progetto RadiolinaProgetto Radiolina
Progetto Radiolina
 
HL7 DFDL with WebSphere Message Broker
HL7 DFDL with WebSphere Message BrokerHL7 DFDL with WebSphere Message Broker
HL7 DFDL with WebSphere Message Broker
 
PRESENTACIÓN -ANÁLISIS DE LA IMPLANTACIÓN DE PROCESOS DE DIRECCIÓN ESTRATÉGIC...
PRESENTACIÓN -ANÁLISIS DE LA IMPLANTACIÓN DE PROCESOS DE DIRECCIÓN ESTRATÉGIC...PRESENTACIÓN -ANÁLISIS DE LA IMPLANTACIÓN DE PROCESOS DE DIRECCIÓN ESTRATÉGIC...
PRESENTACIÓN -ANÁLISIS DE LA IMPLANTACIÓN DE PROCESOS DE DIRECCIÓN ESTRATÉGIC...
 
Formula magistral desmopresina
Formula magistral desmopresinaFormula magistral desmopresina
Formula magistral desmopresina
 
OpenStack Astara
OpenStack AstaraOpenStack Astara
OpenStack Astara
 
Internet 2
Internet 2Internet 2
Internet 2
 
Nuevas extensiones de dominio y Trademark Clearinghouse
Nuevas extensiones de dominio y Trademark ClearinghouseNuevas extensiones de dominio y Trademark Clearinghouse
Nuevas extensiones de dominio y Trademark Clearinghouse
 
Unser Wasser. Unser Leben - warum VortexPower
Unser Wasser. Unser Leben - warum VortexPower Unser Wasser. Unser Leben - warum VortexPower
Unser Wasser. Unser Leben - warum VortexPower
 
Claves de una estrategia en redes sociales
Claves de una estrategia en redes socialesClaves de una estrategia en redes sociales
Claves de una estrategia en redes sociales
 
Curso De Tarot 2
Curso De Tarot 2Curso De Tarot 2
Curso De Tarot 2
 
Simplified Technical English: How Standardizing Content Saves Translation Cos...
Simplified Technical English: How Standardizing Content Saves Translation Cos...Simplified Technical English: How Standardizing Content Saves Translation Cos...
Simplified Technical English: How Standardizing Content Saves Translation Cos...
 
Multiband Transceivers - [Chapter 7] Multi-mode/Multi-band GSM/GPRS/TDMA/AMP...
Multiband Transceivers - [Chapter 7]  Multi-mode/Multi-band GSM/GPRS/TDMA/AMP...Multiband Transceivers - [Chapter 7]  Multi-mode/Multi-band GSM/GPRS/TDMA/AMP...
Multiband Transceivers - [Chapter 7] Multi-mode/Multi-band GSM/GPRS/TDMA/AMP...
 

Similaire à Ruby On Rails Hermann Stern Bcklu

Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails EinführungReinhold Weber
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Jürg Stuker
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro sessionVirttoo org
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17remigius-stalder
 
SLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSchlomo Schapiro
 
Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007jan_mindmatters
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
Ruby on Rails - Eine kurze Einführung
Ruby on Rails - Eine kurze EinführungRuby on Rails - Eine kurze Einführung
Ruby on Rails - Eine kurze EinführungThomas R. Koll
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code CookbookUlrich Krause
 
6 - Sprachen des Semantic Web - RDF(S) Frameworks
6 - Sprachen des Semantic Web - RDF(S) Frameworks6 - Sprachen des Semantic Web - RDF(S) Frameworks
6 - Sprachen des Semantic Web - RDF(S) FrameworksSteffen Schloenvoigt
 
Tech-Talk: Python vs. Ruby
Tech-Talk: Python vs. RubyTech-Talk: Python vs. Ruby
Tech-Talk: Python vs. Rubyschlauch
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLFromDual GmbH
 
Django - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesDjango - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesMarkus Zapke-Gründemann
 

Similaire à Ruby On Rails Hermann Stern Bcklu (20)

Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails Einführung
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
Ruby on Rails SS09 04
Ruby on Rails SS09 04Ruby on Rails SS09 04
Ruby on Rails SS09 04
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
 
Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro session
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Node.js
Node.jsNode.js
Node.js
 
SLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauen
 
Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007
 
Ruby on Rails SS09 02
Ruby on Rails SS09 02Ruby on Rails SS09 02
Ruby on Rails SS09 02
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
Ruby on Rails - Eine kurze Einführung
Ruby on Rails - Eine kurze EinführungRuby on Rails - Eine kurze Einführung
Ruby on Rails - Eine kurze Einführung
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
 
6 - Sprachen des Semantic Web - RDF(S) Frameworks
6 - Sprachen des Semantic Web - RDF(S) Frameworks6 - Sprachen des Semantic Web - RDF(S) Frameworks
6 - Sprachen des Semantic Web - RDF(S) Frameworks
 
Ruby on Rails SS09 12
Ruby on Rails SS09 12Ruby on Rails SS09 12
Ruby on Rails SS09 12
 
Tech-Talk: Python vs. Ruby
Tech-Talk: Python vs. RubyTech-Talk: Python vs. Ruby
Tech-Talk: Python vs. Ruby
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQL
 
Django - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesDjango - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlines
 

Ruby On Rails Hermann Stern Bcklu

  • 1. Ruby on Rails BarCamp Klagenfurt 7. / 8. Februar 2009 Hermann Stern hstern@derstern.at http://twitter.com/hstern Hermann Stern www.derstern.at 07.02.2009 1
  • 2. Inhalt Ruby? on Rails Ruby on Rails? Konzepte Installation Entwicklungsumgebung Beispiel BarCamp Lectures Und jetzt? Hermann Stern www.derstern.at 07.02.2009 2
  • 3. Ruby? on Rails (1/3) http://www.ruby-lang.org/ Objekt-orientierte Interpretersprache ruby filename.rb Alles ist ein Objekt Zahl 1 ist eine Instanz der Klasse Fixnum Daher keine Funktionen, nur Methoden Dynamisch / Weakly typed Wechsel des Typs einer Variablen möglich Interactive Ruby Shell http://tryruby.hobix.com/ Hermann Stern www.derstern.at 07.02.2009 3
  • 4. Ruby? on Rails (2/3) Syntax Anweisung endet am Ende der Zeile, kein ; notwendig Variablen und Methoden klein (order_status) Klassen groß (Registration) Variablen: lokal (variable) global ($variable) Instanzvariablen (@variable): Attribute von Objekten Klassenvariablen (@@variable): Alle Instanzen der Klassen teilen sich die Variablen Typen: String, Fixnum, Float, Array etc. Hermann Stern www.derstern.at 07.02.2009 4
  • 5. Ruby? on Rails (3/3) # Kommentar einzeilig =begin Kommentar mehrzeilig =end Variablen werden nicht deklariert nehmen den Datentyp des zugewiesenen Wertes an a=2 text = „mein Text“ text = String.new(„mein Text“) geht aber auch Methoden text.length() RoR generiert viel Code, von dem man dann weiter arbeiten kann…. Hermann Stern www.derstern.at 07.02.2009 5
  • 6. Ruby on Rails? (1/2) Framework für datenbankgestützte Webapplikationen In Ruby geschrieben DRY - quot;Don’t Repeat Yourselfquot; Convention Over Configuration Alles hat (s)einen fixen Platz HTML Files, Bilder, JS, etc. Zugriff auf Daten, Pfade, Links normiert Opinionated „there is a best way to do something“ Hermann Stern www.derstern.at 07.02.2009 6
  • 7. Ruby on Rails? (2/2) Model View Controller (MVC) Modell (Daten, meist in Datenbanktabellen) Action Record View (User Interface, HTML mit Ruby Code) Action View Controller (verbinden Modell und View) Action Controller Wird alles als Ruby Sourcecode generiert Start mit Datenmodell, Controller und View setzen dann darauf auf Hermann Stern www.derstern.at 07.02.2009 7
  • 8. Konzepte (1/2) Generatoren Modelle CRUD (Create Retrieve Update Delete) Controller Views etc. Scaffolds Modell, View und Controller Rake tasks db:update, db:create; rails:update etc. Hermann Stern www.derstern.at 07.02.2009 8
  • 9. Konzepte (2/2) Action Record Naming Convention Klasse: Einzahl in Englisch (Student) Tabellen: Mehrzahl in Englisch (students) holt sich RoR aus einem Wörterbuch) • Person => people • Student => students Mapping von URLs auf Methoden in Controllern /controller class name/controller method name http://localhost:3001/lectures http://localhost:3001/lectures/new http://localhost:3001/lectures/show/1 Hermann Stern www.derstern.at 07.02.2009 9
  • 10. Installation http://rubyonrails.org/download Ruby (1.8.7) RubyGems (1.3.1) Ruby package manager ähnlich wie apt-get Rails (2.2.2) gem install rails Win / MySQL: gem install rails -v 2.1.0 Oder Komplettpakete (Instant Rails etc.) Hermann Stern www.derstern.at 07.02.2009 10
  • 11. Entwicklungsumgebungen Aptana RadRails Allein oder als Eclipse Plugin http://www.aptana.com/rails/ EasyEclipse http://www.easyeclipse.org/ NetBeans for Ruby http://www.netbeans.org/ Für Puristen: Command line & Text Editor TextMate (OSX), VIM for Rails, Emacs for Rails Hermann Stern www.derstern.at 07.02.2009 11
  • 12. Beispiel: BarCamp Lectures Umgebung: EasyEclipse MySQL Hermann Stern www.derstern.at 07.02.2009 12
  • 13. Beispiel: Neues Projekt Eclipse | Neues Rails Projekt anlegen WEBrick Mongrel Hermann Stern www.derstern.at 07.02.2009 13
  • 14. Beispiel: Verzeichnisse Alles hat seinen fixen Platz app (Applikation) controllers helpers models views config (Konfiguration) public (HTML, JS, Bilder) Hermann Stern www.derstern.at 07.02.2009 14
  • 15. Beispiel: Webserver starten Direkt von Eclipse aus http://localhost:3010/ TO Dos auf Startseite Datenbank erstellen Controller Modelle und Views Default Routen Hermann Stern www.derstern.at 07.02.2009 15
  • 16. Beispiel: Ruby on Rails Startseite Hermann Stern www.derstern.at 07.02.2009 16
  • 17. Beispiel: Datenbank konfigurieren config/database.yml Standard: sqlite3 MySQL, PostgreSQL Drei Umgebungen Entwicklung (kein Cache, bessere Fehlermeldungen, keine Emails) default Produktion (Cache aktiv) Test (für Testklassen) config/environments/<NAME>.rb Definition eigener Umgebungen möglich Hermann Stern www.derstern.at 07.02.2009 17
  • 18. Beispiel: Datenbank anlegen Hermann Stern www.derstern.at 07.02.2009 18
  • 19. Beispiel: Controlleranlegen Startseite der Applikation Name des Controllers (home) Aktion (index) Name des Controllers (home) Aktion (index) Angelegte Dateien controllers/home_controller.rb helpers/home_helper.rb views/home/index.html.erb Hermann Stern www.derstern.at 07.02.2009 19
  • 20. Beispiel: Modelle und Views anlegen (1/2) Lecture Name, Lecturer script/generate scaffold Lecture name:string lecturer:string Registration Firstname, Lastname, Email script/generate scaffold Registration surname:string lastname:string email:string Hermann Stern www.derstern.at 07.02.2009 20
  • 21. Beispiel: Modelle und Views anlegen (2/2) Erstellte Dateien controllers/ lectures_controller.rb helpers/ lectures_helper.rb models/ lecture.rb views/lectures/ *.html.erb db/migrate/ 20090206204429_create.. Hermann Stern www.derstern.at 07.02.2009 21
  • 22. Beispiel: controllers/lectures_controller.rb http://localhost:3001/lectures(.xml) Hermann Stern www.derstern.at 07.02.2009 22
  • 23. Beispiel: models/lecture.rb Noch leer, da keine „Sonderwünsche“ Später Relationen zu anderen Tabellen has_many, belongs_to Validierungen Wert aus einer Liste, Länge, Typ etc. Hermann Stern www.derstern.at 07.02.2009 23
  • 24. Beispiel: views/lectures/index.html.erb Hermann Stern www.derstern.at 07.02.2009 24
  • 25. Beispiel: db/migrate/2009..lectures.rb Speichern der Änderungen in die Datenbank rake db:migrate Hermann Stern www.derstern.at 07.02.2009 25
  • 26. Beispiel: db/migrate/2009..lectures.rb „Normale Tabellen“ Inhalt kann selber editieren werden Automatisch erstellte Felder created_at updated_at Wieder „gratis“ Funktionalität ohne Mehrarbeit Hermann Stern www.derstern.at 07.02.2009 26
  • 27. Beispiel: Default Routen (1/2) Pfade durch die Applikation Neue Startseite setzen public/index.html löschen config/routes.rb editieren map.root :controller => quot;homequot; map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format‚ Hermann Stern www.derstern.at 07.02.2009 27
  • 28. Beispiel: Default Routen (2/2) views/home/index.html.erb anpassen <h1>BarCamp Anmeldungen</h1> <p> Link zu den Sessions </p> <%= link_to quot;Lecturesquot;, lectures_path %> (lectures_path wurde automatisch erstellt) Hermann Stern www.derstern.at 07.02.2009 28
  • 29. Beispiel: Screenshots (1/3) http://localhost:3001/ Hermann Stern www.derstern.at 07.02.2009 29
  • 30. Beispiel: Screenshots (2/3) Hermann Stern www.derstern.at 07.02.2009 30
  • 31. Beispiel: Screenshots (3/3) Hermann Stern www.derstern.at 07.02.2009 31
  • 32. Beispiel: So gehts weiter… Anpassen der HTML Templates Registration durch Scaffold hinzufügen Tabellen verbinden belongs to, has many, etc class Lecture < ActiveRecord::Base has_many :Registrations end Weitere Methoden verfügbar @registrations = Lecture.find_all Hermann Stern www.derstern.at 07.02.2009 32
  • 33. Und jetzt? http://en.wikibooks.org/wiki/Ruby_on_Rails http://en.wikibooks.org/wiki/Ruby http://openbook.galileocomputing.de/ruby_on_rails/ Ausprobieren, Learning by Doing Kreativ sein http://www.peepalot.com Online stellen Wenige Provider bieten WEBrick oder Mongrel Es gibt auch ein Apache Modul für RoR (mod_rails) Hermann Stern www.derstern.at 07.02.2009 33
  • 34. Hermann Stern www.derstern.at 07.02.2009 34