Ruby on Rails Ruby on Rails http://reinholdweber.com   – reinhold.weber@gmx.net
Ruby on Rails <ul><li>Inhalt </li></ul><ul><li>Einführende Beispiele </li></ul><ul><li>Ruby </li></ul><ul><li>Rails </li><...
Ruby on Rails Ruby Interpretierte, objektorientierte & dynamisch typisierte Skriptsprache Rails Fullstack MVC WebApplicati...
Ruby on Rails „  Makes Php look like Assembler “ Ruby IRC Channel
Ruby on Rails „  Nachahmung  ist die höchste  Form der   Anerkennung “
Ruby on Rails Rails Nachbildungen in PHP solar Seagull Zend Framework symfony CakePHP Prado ZooP WACT CodeIgniter
Ruby on Rails Library Modul, das eine bestimmte Funktionalität anbietet eZComponents / PEAR Plattform, auf der man seine A...
Ruby on Rails Basecamp Twitter Mephisto Measuremap Odeo Highrise 43 Places Backpack shopify Rails Anwendungen
Ruby on Rails Ruby eine dynamische, freie Programmiersprache,  die sich  einfach anwenden  und  produktiv einsetzen lässt....
Ruby on Rails Ruby - Japan 1995, Yukihiro Matsumoto - Open Source - Mischung aus Perl, Smalltalk, Eiffel, Ada und Lisp - H...
Ruby on Rails Ruby charakteristika
Ruby on Rails Ruby - Generisch, interpretiert, reflektiert, mit Garbage Collector - Eher auf Menschen als auf Computer opt...
Ruby on Rails Alles ist ein Objekt String = String.new 5.times do  puts „Hello World“ end Hello World Hello World Hello Wo...
Ruby on Rails Alles ist ein Objekt 1.upto(100) { |i| puts i } 3.141.ceil 2.718.floor 1 2 3 … 100 => 1 => 4 =>  2
Ruby on Rails Alles ist ein Objekt rand.to_s [2..10] validates_each :href, :on => :create do |record, attr, value| begin u...
Ruby on Rails Alles ist ein Objekt class Auto def beschleunigen puts 'Brumm' end end auto1 = Auto.new auto1.beschleunigen ...
Ruby on Rails Alles ist ein Objekt class GutesAuto < Auto def bremsen puts 'Quietsch' end end auto2 = GutesAuto.new auto2....
Ruby on Rails Ruby Syntax a = [1, 'hi', 3.14, 1, 2, [4, 5]] a[2]  # 3.14 a.reverse  # [[4, 5], 2, 1, 3.14, 'hi', 1] a.flat...
Ruby on Rails PHP   Ruby  Gemeinsamkeiten + auch dynamisch typisiert + es gibt Klassen und Zugriffsmodifizierer (public, ...
Ruby on Rails PHP   Ruby  Gemeinsamkeiten + große Standardbibliothek + true und false wie in PHP,  null = nil + einige Va...
Ruby on Rails PHP   Ruby  Unterschiede - hat strenge Typisierung to_s, to_i - Strings, Zahlen, Arrays und Hashes sind Obj...
Ruby on Rails Java   Ruby  Gemeinsamkeiten + Speicher wird von einem Garbage-Collector verwaltet + Werkzeuge zur Dokument...
Ruby on Rails Java   Ruby  Unterschiede - muss nicht kompiliert werden - verschiedene GUI Toolkits z.B. WxRuby - require ...
Ruby on Rails Java   Ruby  Unterschiede - Alle Instanzvariablen sind privat, Zugriff nur über Methoden - Keine statische ...
Ruby on Rails Java   Ruby  Unterschiede - Konstruktor heißt immer initialize anstatt Klassenname - Mixins anstelle von In...
Ruby on Rails Rails - Dänemark 2004, David Heinemeier Hansson - Open Source MIT Lizenz - 15 Core Entwickler - Fullstack MV...
Ruby on Rails Ruby on Rails philosophie
Ruby on Rails Ruby on Rails Die  1. Regel  im Rails Club lautet: Don‘t repeat yourself
Ruby on Rails Ruby on Rails Die  2. Regel  im Rails Club lautet: Don‘t repeat yourself
Ruby on Rails DRY &quot;Don't repeat yourself&quot;- Prinzip (DRY):  Bsp: In Rails ist kein explizites  Datenbankschema nö...
Ruby on Rails MVC Best practices REST Convention over configuration DRY OOP Active Record CRUD
Ruby on Rails MVC Rails verwendet das Modell-View-Controller-Muster (MVC),  welches die Schichten der Anwendung  sauber in...
Ruby on Rails MVC Das  Model  bildet die zugrundeliegende Datenstruktur Die  View  ist die Darstellung der Datenstruktur D...
Ruby on Rails MVC Model Controller Browser View Database
Ruby on Rails M VC -  Model Das  Model  bildet die zugrundeliegende Datenstruktur Die  View  ist die Darstellung der Daten...
Ruby on Rails Active Record <ul><li>ein Object-Relational Mapper (ORM)  </li></ul>Klasse      Datenbanktabelle Methoden  ...
Ruby on Rails Active Record Patient +name +email +date_of_birth +age +gender  Datenbank
Ruby on Rails Active Record::Base#Find class Patient< ActiveRecord::Base end Patient.find(1) SELECT * FROM patients WHERE ...
Ruby on Rails Models class Patient< ActiveRecord::Base end class Encounter< ActiveRecord::Base end class Physician< Active...
Ruby on Rails Associations class Patient< ActiveRecord::Base has_many :encounters has_many :physicians, :through => :encou...
Ruby on Rails Sensible Defaults class Patient < ActiveRecord::Base has_many :encounters,  :class_name => 'Encounter',  :fo...
Ruby on Rails Sensible Defaults class Encounter < ActiveRecord::Base belongs_to :patient,  :class_name => 'Patient',  :for...
Ruby on Rails Sensible Defaults class Physician < ActiveRecord::Base has_many :encounters,  :class_name => 'Encounter',  :...
Ruby on Rails M V C -  View Das  Model  bildet die zugrundeliegende Datenstruktur Die  View  ist die Darstellung der Daten...
Ruby on Rails View <ul><li>Modul aus der ActionPack Bibliothek  </li></ul><ul><li>welches eine Antwort für den Client rend...
Ruby on Rails Templates <ul><li>Vorlagen befinden sich in app/view/controller_name, . </li></ul><ul><li>Z.B. die Vorlagen ...
Ruby on Rails Templates <ul><li>rhtml  -  die am häufigsten vorkommende Variante  </li></ul><ul><li>für HTML. HTML Dateien...
Ruby on Rails Partials <ul><li>Partials sind Templates, die nur einen Teil einer Seite  </li></ul><ul><li>generieren wie z...
Ruby on Rails Helpers <ul><li>Helpers sind Ruby Module mit Methoden,  </li></ul><ul><li>die in den Templates verfügbar sin...
Ruby on Rails View <html> <head> <title><%= @title %></title> </head> <body> <h1><%= @homepage_title %></h1>   <strong>Pat...
Ruby on Rails MV C  -  Controller Das  Model  bildet die zugrundeliegende Datenstruktur Die  View  ist die Darstellung der...
Ruby on Rails Action Controller <ul><li>Trennung von Business Logik  </li></ul><ul><li>& Präsentation </li></ul><ul><li>Id...
Ruby on Rails Action Controller class PatientController < ApplicationController def index @patient = Patient.find :first @...
Ruby on Rails Intelligente  Architektur Jede Rails-Anwendung hat eine identische Dateistruktur,  es sind kaum Konfiguratio...
Ruby on Rails Struktur app/ components/ config/ db/ doc/ lib/ log/ public/ script/ test/ tmp/ vendor/ ruby projekt1
Ruby on Rails Scaffolding Mit wenigen Befehlen kann eine komplette  Administrationsoberfläche zum Erstellen, Bearbeiten  u...
Ruby on Rails Scaffolding Klasse      Datenbanktabelle Methoden      Datenbankfelder Objekt      Datensatz
Ruby on Rails Konvention über Konfiguration DB Tabelle ‚entries‘      Klasse ‚Entry‘
Ruby on Rails Migrations Ein Weg das Datenbankschema zu entwickeln Migrations benutzen eine datenbankunabhängige Ruby API ...
Ruby on Rails CRUD Create: create, new Read:  find, find_by_<attr> Update: save, update_attributes Delete: destroy
Ruby on Rails Schnelles  Feedback Ruby-Code wird zur Laufzeit interpretiert,  Live-Änderungen an der Datenbankstruktur  si...
Ruby on Rails Web 2.0 inklusive Techniken wie AJAX und visuelle Effekte  sind von Haus aus mit wenigen Zeilen nutzbar.. Aj...
Ruby on Rails Ruby on Rails installation
Ruby on Rails Installation Instant Rails/ Locomotive      Windows MacPorts/ Quellen      Mac Quellen      Linux
Ruby on Rails Installation Ruby <ul><li>rubyonrails.org/down </li></ul><ul><li>Windows Installer runterladen, welcher  </l...
Ruby on Rails Installation Rails <ul><li>Installierte Ruby Version ausgeben </li></ul><ul><li>ruby -v </li></ul><ul><li>Üb...
Ruby on Rails Projekt anlegen <ul><li>Neues Projekt erzeugen </li></ul><ul><li>ruby> rails cookbook </li></ul><ul><li>Serv...
Ruby on Rails Projekt konfigurieren <ul><li>Datenbank Konfiguration </li></ul><ul><li>cookbook/config/database.yml </li></...
Ruby on Rails Projekt konfigurieren <ul><li>Datenbank anlegen </li></ul><ul><li>DB: cookbook Tb: recipes </li></ul><ul><li...
Ruby on Rails Projekt konfigurieren <ul><li>Datenbank anlegen </li></ul><ul><li>DB: cookbook Tb: recipes </li></ul><ul><li...
Ruby on Rails RoR Editoren SciTE 3rdRail Aptana jEdit Eclipse vim emacs RadRails
Ruby on Rails ROR Vorteile + Sehr schnelle Ergebnisse v.a bei CRUD Applikationen + nimmt Entwicklern Routinearbeiten ab + ...
Ruby on Rails ROR Vorteile + Organisierte Struktur der Anwendung + Viel Unterstützung durch freiwillige  Supporter und Pro...
Ruby on Rails ROR Vorteile + 10-mal schnellere Ergebnisse als vergleichbare  Java Framworks + Source-Code bleibt schlank –...
Ruby on Rails ROR Vorteile + Integriertes Test-Framework unterstützt automatisiertes  Testen der Applikation. Dadurch könn...
Ruby on Rails ROR Nachteile - Völlige Abhängigkeit vom Framework - Je spezieller die Applikation, je weniger Vorteile - Te...
Ruby on Rails ROR Nachteile - Deployment ist kompliziert - Größtes Problem: Performance & Skalierbarkeit - Teilweise erheb...
Ruby on Rails Lernen von Rails <ul><li>Entwickeln nach Code Standards und Best Practices </li></ul><ul><li>Convention over...
Ruby on Rails Ruby on Rails ressourcen
Ruby on Rails WWW - rubyonrails.com/ - wiki.rubyonrails.org/rails - api.rubyonrails.org/ - (noch) nicht sehr weit verbreit...
Ruby on Rails Bücher <ul><li>Agile Web Development with Rails – DHH </li></ul><ul><li>- Rails Recipes – Chad Fowler </li><...
Ruby on Rails Q & A
Upcoming SlideShare
Loading in …5
×

Ruby On Rails Einführung

38,694 views
38,466 views

Published on

Introduction to the Ruby on Rails Web Framework (German)

Published in: Technology
2 Comments
14 Likes
Statistics
Notes
No Downloads
Views
Total views
38,694
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
385
Comments
2
Likes
14
Embeds 0
No embeds

No notes for slide

Ruby On Rails Einführung

  1. 1. Ruby on Rails Ruby on Rails http://reinholdweber.com – reinhold.weber@gmx.net
  2. 2. Ruby on Rails <ul><li>Inhalt </li></ul><ul><li>Einführende Beispiele </li></ul><ul><li>Ruby </li></ul><ul><li>Rails </li></ul><ul><li>Live Beispiel </li></ul>
  3. 3. Ruby on Rails Ruby Interpretierte, objektorientierte & dynamisch typisierte Skriptsprache Rails Fullstack MVC WebApplication Framework
  4. 4. Ruby on Rails „ Makes Php look like Assembler “ Ruby IRC Channel
  5. 5. Ruby on Rails „ Nachahmung ist die höchste Form der Anerkennung “
  6. 6. Ruby on Rails Rails Nachbildungen in PHP solar Seagull Zend Framework symfony CakePHP Prado ZooP WACT CodeIgniter
  7. 7. Ruby on Rails Library Modul, das eine bestimmte Funktionalität anbietet eZComponents / PEAR Plattform, auf der man seine Anwendung aufbauen kann Ruby on Rails / CakePHP / .NET / Django Framework
  8. 8. Ruby on Rails Basecamp Twitter Mephisto Measuremap Odeo Highrise 43 Places Backpack shopify Rails Anwendungen
  9. 9. Ruby on Rails Ruby eine dynamische, freie Programmiersprache, die sich einfach anwenden und produktiv einsetzen lässt. Sie hat eine elegante Syntax , die man leicht lesen und schreiben kann.
  10. 10. Ruby on Rails Ruby - Japan 1995, Yukihiro Matsumoto - Open Source - Mischung aus Perl, Smalltalk, Eiffel, Ada und Lisp - Hohe Qualität der Bibliotheken - Wenige aber hochwertige Literatur
  11. 11. Ruby on Rails Ruby charakteristika
  12. 12. Ruby on Rails Ruby - Generisch, interpretiert, reflektiert, mit Garbage Collector - Eher auf Menschen als auf Computer optimiert - Mächtiger als Perl, objektorientierter als Python - Alles ist ein Objekt, keine primitiven Datentypen - Starke dynamische Typisierung
  13. 13. Ruby on Rails Alles ist ein Objekt String = String.new 5.times do puts „Hello World“ end Hello World Hello World Hello World Hello World Hello World => 5
  14. 14. Ruby on Rails Alles ist ein Objekt 1.upto(100) { |i| puts i } 3.141.ceil 2.718.floor 1 2 3 … 100 => 1 => 4 => 2
  15. 15. Ruby on Rails Alles ist ein Objekt rand.to_s [2..10] validates_each :href, :on => :create do |record, attr, value| begin uri = URI.parse(value) if uri.class != URI::HTTP record.errors.add(attr, 'Only HTTP protocol addresses can be used') end rescue URI::InvalidURIError record.errors.add(attr, 'The format of the url is not valid.') end end <ul><li>8digit long </li></ul><ul><li>random number </li></ul>
  16. 16. Ruby on Rails Alles ist ein Objekt class Auto def beschleunigen puts 'Brumm' end end auto1 = Auto.new auto1.beschleunigen Brumm => nil
  17. 17. Ruby on Rails Alles ist ein Objekt class GutesAuto < Auto def bremsen puts 'Quietsch' end end auto2 = GutesAuto.new auto2.beschleunigen auto2.bremsen Brumm Quietsch => nil
  18. 18. Ruby on Rails Ruby Syntax a = [1, 'hi', 3.14, 1, 2, [4, 5]] a[2] # 3.14 a.reverse # [[4, 5], 2, 1, 3.14, 'hi', 1] a.flatten.uniq # [1, 'hi', 3.14, 2, 4, 5]
  19. 19. Ruby on Rails PHP  Ruby Gemeinsamkeiten + auch dynamisch typisiert + es gibt Klassen und Zugriffsmodifizierer (public, protected, private) + heredoc Syntax - Exceptions wie in PHP 5
  20. 20. Ruby on Rails PHP  Ruby Gemeinsamkeiten + große Standardbibliothek + true und false wie in PHP, null = nil + einige Variablen beginnen mit $ + String Interpolation „ $foo is a $bar” --- ”#{foo} is a #{bar}”
  21. 21. Ruby on Rails PHP  Ruby Unterschiede - hat strenge Typisierung to_s, to_i - Strings, Zahlen, Arrays und Hashes sind Objekte Statt abs(-1) hier -1.abs - Klammern in Methodenaufrufen sind optional - keine abstract oder interface Klassen
  22. 22. Ruby on Rails Java  Ruby Gemeinsamkeiten + Speicher wird von einem Garbage-Collector verwaltet + Werkzeuge zur Dokumentation: RDoc + Objekte sind stark getypt + es gibt Klassen und Zugriffsmodifizierer (public, protected, private)
  23. 23. Ruby on Rails Java  Ruby Unterschiede - muss nicht kompiliert werden - verschiedene GUI Toolkits z.B. WxRuby - require statt import - Klammern in Methodenaufrufen optional get_books
  24. 24. Ruby on Rails Java  Ruby Unterschiede - Alle Instanzvariablen sind privat, Zugriff nur über Methoden - Keine statische Typprüfung - keine Typdeklarationen notwendig a = [1,2,3] statt int[] a = [1,2,3]; - keine Typumwandlung (Typecasting)
  25. 25. Ruby on Rails Java  Ruby Unterschiede - Konstruktor heißt immer initialize anstatt Klassenname - Mixins anstelle von Interfaces - self anstatt this - Unit-Testing noch einfacher
  26. 26. Ruby on Rails Rails - Dänemark 2004, David Heinemeier Hansson - Open Source MIT Lizenz - 15 Core Entwickler - Fullstack MVC WebFramework - Wurde aus bestehender Anwendung extrahiert
  27. 27. Ruby on Rails Ruby on Rails philosophie
  28. 28. Ruby on Rails Ruby on Rails Die 1. Regel im Rails Club lautet: Don‘t repeat yourself
  29. 29. Ruby on Rails Ruby on Rails Die 2. Regel im Rails Club lautet: Don‘t repeat yourself
  30. 30. Ruby on Rails DRY &quot;Don't repeat yourself&quot;- Prinzip (DRY): Bsp: In Rails ist kein explizites Datenbankschema nötig, um mit der Datenbank zu kommunizieren, da die Datenbank direkt ausgewertet wird.
  31. 31. Ruby on Rails MVC Best practices REST Convention over configuration DRY OOP Active Record CRUD
  32. 32. Ruby on Rails MVC Rails verwendet das Modell-View-Controller-Muster (MVC), welches die Schichten der Anwendung sauber in Verantwortungsbereiche aufteilt
  33. 33. Ruby on Rails MVC Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
  34. 34. Ruby on Rails MVC Model Controller Browser View Database
  35. 35. Ruby on Rails M VC - Model Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
  36. 36. Ruby on Rails Active Record <ul><li>ein Object-Relational Mapper (ORM) </li></ul>Klasse  Datenbanktabelle Methoden  Datenbankfelder Objekt  Datensatz
  37. 37. Ruby on Rails Active Record Patient +name +email +date_of_birth +age +gender  Datenbank
  38. 38. Ruby on Rails Active Record::Base#Find class Patient< ActiveRecord::Base end Patient.find(1) SELECT * FROM patients WHERE id = 1 Patient.count SELECT COUNT(*) AS count Patient.find_by_name ‘Reinhold Weber‘ SELECT * FROM patients WHERE name = ‚Reinhold Weber‘ Patient.find_by_date_of_birth ‘1985-07-08‘ SELECT * FROM patients WHERE date_of_birth = ‚1985-07-08‘
  39. 39. Ruby on Rails Models class Patient< ActiveRecord::Base end class Encounter< ActiveRecord::Base end class Physician< ActiveRecord::Base end
  40. 40. Ruby on Rails Associations class Patient< ActiveRecord::Base has_many :encounters has_many :physicians, :through => :encounters end class Encounter< ActiveRecord::Base belongs_to :patient belongs_to :physician end class Physician< ActiveRecord::Base has_many :encounters has_many :patients, :through => :encounters end
  41. 41. Ruby on Rails Sensible Defaults class Patient < ActiveRecord::Base has_many :encounters, :class_name => 'Encounter', :foreign_key => 'patient_id' has_many :physicians, :through => encounters, :class_name => 'Physician', :foreign_key => 'physician_id' end
  42. 42. Ruby on Rails Sensible Defaults class Encounter < ActiveRecord::Base belongs_to :patient, :class_name => 'Patient', :foreign_key => 'patient_id' belongs_to :physician, :class_name => 'Physician', :foreign_key => 'physician_id' end
  43. 43. Ruby on Rails Sensible Defaults class Physician < ActiveRecord::Base has_many :encounters, :class_name => 'Encounter', :foreign_key => 'patient_id' has_many :patients, :through :encounters :class_name => 'Patient', :foreign_key => 'patient_id' end
  44. 44. Ruby on Rails M V C - View Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
  45. 45. Ruby on Rails View <ul><li>Modul aus der ActionPack Bibliothek </li></ul><ul><li>welches eine Antwort für den Client rendert </li></ul><ul><li>entscheidet, welches Template und/oder Partial </li></ul><ul><li>und Layout benutzt wird </li></ul><ul><li>Templates benutzen helper Methoden um Links, </li></ul><ul><li>Formulare und JavaScript zu generieren und Text </li></ul><ul><li>zu formatiieren </li></ul>
  46. 46. Ruby on Rails Templates <ul><li>Vorlagen befinden sich in app/view/controller_name, . </li></ul><ul><li>Z.B. die Vorlagen für start::PatientController </li></ul><ul><li>befinden sich unter app/views/start/patient </li></ul><ul><li>Vorlagen, die von mehreren Controllern benutzt werden </li></ul><ul><li>befinden sich in app/views/shared </li></ul>
  47. 47. Ruby on Rails Templates <ul><li>rhtml - die am häufigsten vorkommende Variante </li></ul><ul><li>für HTML. HTML Dateien mit eingebettetem Ruby, </li></ul><ul><li>die die ERb Bibliothek benutzen </li></ul><ul><li>rxml - Dateien mit Ruby code, die die Builder Bibliothek </li></ul><ul><li>benutzen um XML zu generieren, wird normalerweise für </li></ul><ul><li>RSS/Atom benutzt </li></ul><ul><li>rjs - Ruby Code mit einer Rails spezifischen API, die JavaScript </li></ul><ul><li>generiert. Wird benutzt für AJAX </li></ul>
  48. 48. Ruby on Rails Partials <ul><li>Partials sind Templates, die nur einen Teil einer Seite </li></ul><ul><li>generieren wie z.B. einen Header oder Footer </li></ul><ul><li>Partials helfen dabei Seitenelemente wiederzuverwenden </li></ul><ul><li>funktionieren genauso wie Page Templates (views), </li></ul><ul><li>laufen in derselben Umgebung und sind </li></ul><ul><li>im selben Verzeichnis </li></ul><ul><li>Dateinamen beginnen mit einem underscore </li></ul><ul><li>_header </li></ul>
  49. 49. Ruby on Rails Helpers <ul><li>Helpers sind Ruby Module mit Methoden, </li></ul><ul><li>die in den Templates verfügbar sind </li></ul><ul><li>Helpers können Duplikate verhindern und minimieren </li></ul><ul><li>den Code in den Templates </li></ul><ul><li>Jeder Controller hat per default einen </li></ul><ul><li>korrespondierenden helper unter </li></ul><ul><li>app/helpers/controller_name_helper.rb </li></ul>
  50. 50. Ruby on Rails View <html> <head> <title><%= @title %></title> </head> <body> <h1><%= @homepage_title %></h1> <strong>Patient:</strong> <li>Name: <%= @patient.name %></li> <%= render :partial => 'patient_details' %> </body> </html>
  51. 51. Ruby on Rails MV C - Controller Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
  52. 52. Ruby on Rails Action Controller <ul><li>Trennung von Business Logik </li></ul><ul><li>& Präsentation </li></ul><ul><li>Idealerweise sollte keinerlei Logik </li></ul><ul><li>in der Präsentationsschicht sein </li></ul><ul><li>Controller sind Ruby Klassen und befinden sich in </li></ul><ul><li>app/controllers </li></ul>
  53. 53. Ruby on Rails Action Controller class PatientController < ApplicationController def index @patient = Patient.find :first @title = 'Patient Detail' @homepage_title = &quot;Patient: #{@patient.name}&quot; end end
  54. 54. Ruby on Rails Intelligente Architektur Jede Rails-Anwendung hat eine identische Dateistruktur, es sind kaum Konfigurationsanpassungen nötig.
  55. 55. Ruby on Rails Struktur app/ components/ config/ db/ doc/ lib/ log/ public/ script/ test/ tmp/ vendor/ ruby projekt1
  56. 56. Ruby on Rails Scaffolding Mit wenigen Befehlen kann eine komplette Administrationsoberfläche zum Erstellen, Bearbeiten und Löschen von Datenbankeinträgen erstellt werden. Rails erzeugt automatisch den Programm- und HTML-Code, der sukzessive um individuelle Funktionalität erweitert werden kann.
  57. 57. Ruby on Rails Scaffolding Klasse  Datenbanktabelle Methoden  Datenbankfelder Objekt  Datensatz
  58. 58. Ruby on Rails Konvention über Konfiguration DB Tabelle ‚entries‘  Klasse ‚Entry‘
  59. 59. Ruby on Rails Migrations Ein Weg das Datenbankschema zu entwickeln Migrations benutzen eine datenbankunabhängige Ruby API Migration Klassen erben von ActiveRecord::Migration script/generate migration
  60. 60. Ruby on Rails CRUD Create: create, new Read: find, find_by_<attr> Update: save, update_attributes Delete: destroy
  61. 61. Ruby on Rails Schnelles Feedback Ruby-Code wird zur Laufzeit interpretiert, Live-Änderungen an der Datenbankstruktur sind während der Entwicklung ohne Server-Neustart möglich.
  62. 62. Ruby on Rails Web 2.0 inklusive Techniken wie AJAX und visuelle Effekte sind von Haus aus mit wenigen Zeilen nutzbar.. Ajax Eye Candy
  63. 63. Ruby on Rails Ruby on Rails installation
  64. 64. Ruby on Rails Installation Instant Rails/ Locomotive  Windows MacPorts/ Quellen  Mac Quellen  Linux
  65. 65. Ruby on Rails Installation Ruby <ul><li>rubyonrails.org/down </li></ul><ul><li>Windows Installer runterladen, welcher </li></ul><ul><li>Ruby und einige Extensions enthält </li></ul><ul><li>- Alle Komponenten installieren </li></ul>
  66. 66. Ruby on Rails Installation Rails <ul><li>Installierte Ruby Version ausgeben </li></ul><ul><li>ruby -v </li></ul><ul><li>Über RubyGem, das Paketverwaltungssystem </li></ul><ul><li>von Ruby, Rails installieren </li></ul><ul><li>gem install rails --include-dependencies </li></ul>
  67. 67. Ruby on Rails Projekt anlegen <ul><li>Neues Projekt erzeugen </li></ul><ul><li>ruby> rails cookbook </li></ul><ul><li>Server (WEBrick) </li></ul><ul><li>starten </li></ul><ul><li>rubycookbook> ruby script/server </li></ul><ul><li>http://localhost:3000/ </li></ul>
  68. 68. Ruby on Rails Projekt konfigurieren <ul><li>Datenbank Konfiguration </li></ul><ul><li>cookbook/config/database.yml </li></ul><ul><li>Server (WEBrick) neustarten </li></ul><ul><li>ruby script/server </li></ul><ul><li>http://localhost:3000/ </li></ul>
  69. 69. Ruby on Rails Projekt konfigurieren <ul><li>Datenbank anlegen </li></ul><ul><li>DB: cookbook Tb: recipes </li></ul><ul><li>Model generieren </li></ul><ul><li>rubycookbook> ruby script/generate model Recipe </li></ul>
  70. 70. Ruby on Rails Projekt konfigurieren <ul><li>Datenbank anlegen </li></ul><ul><li>DB: cookbook Tb: recipes </li></ul><ul><li>Conroller generieren </li></ul><ul><li>rubycookbook> ruby script/generate controller Recipe </li></ul>
  71. 71. Ruby on Rails RoR Editoren SciTE 3rdRail Aptana jEdit Eclipse vim emacs RadRails
  72. 72. Ruby on Rails ROR Vorteile + Sehr schnelle Ergebnisse v.a bei CRUD Applikationen + nimmt Entwicklern Routinearbeiten ab + Automatische Verwendung von Best Practices
  73. 73. Ruby on Rails ROR Vorteile + Organisierte Struktur der Anwendung + Viel Unterstützung durch freiwillige Supporter und Programmierer + Code läuft auf verschiedenen Plattformen mit minimalen Anpassungen
  74. 74. Ruby on Rails ROR Vorteile + 10-mal schnellere Ergebnisse als vergleichbare Java Framworks + Source-Code bleibt schlank – ca. 50% kleiner als ein vergleichbares PHP-Programm + Wartung der Software wird durch MVC, DRY, OOP viel einfacher, speziell bei großen Projekten
  75. 75. Ruby on Rails ROR Vorteile + Integriertes Test-Framework unterstützt automatisiertes Testen der Applikation. Dadurch können Fehlfunktionen von Anfang an minimiert werden + Web-Sicherheit ist integraler Bestandteil von Ruby on Rails + Web-2.0 (Ajax) fähig
  76. 76. Ruby on Rails ROR Nachteile - Völlige Abhängigkeit vom Framework - Je spezieller die Applikation, je weniger Vorteile - Teilweise erheblicher Erstaufwand - (noch) nicht sehr weit verbreitet (Hosting)
  77. 77. Ruby on Rails ROR Nachteile - Deployment ist kompliziert - Größtes Problem: Performance & Skalierbarkeit - Teilweise erheblicher Erstaufwand - (noch) nicht sehr weit verbreitet (Hosting)
  78. 78. Ruby on Rails Lernen von Rails <ul><li>Entwickeln nach Code Standards und Best Practices </li></ul><ul><li>Convention over Configuration </li></ul><ul><li>- MVC, DRY Ansatz für Webanwendungen </li></ul><ul><li>- Test Driven Development </li></ul><ul><li>- Einsatz von OOP </li></ul>
  79. 79. Ruby on Rails Ruby on Rails ressourcen
  80. 80. Ruby on Rails WWW - rubyonrails.com/ - wiki.rubyonrails.org/rails - api.rubyonrails.org/ - (noch) nicht sehr weit verbreitet (Hosting)
  81. 81. Ruby on Rails Bücher <ul><li>Agile Web Development with Rails – DHH </li></ul><ul><li>- Rails Recipes – Chad Fowler </li></ul><ul><li>- why's (poignant) guide to Ruby - http://poignantguide.net/ruby/ </li></ul>
  82. 82. Ruby on Rails Q & A

×