4. Ruby on Rails „ Makes Php look like Assembler “ Ruby IRC Channel
5. Ruby on Rails „ Nachahmung ist die höchste Form der Anerkennung “
6. Ruby on Rails Rails Nachbildungen in PHP solar Seagull Zend Framework symfony CakePHP Prado ZooP WACT CodeIgniter
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
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. 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
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. 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. 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.
16. Ruby on Rails Alles ist ein Objekt class Auto def beschleunigen puts 'Brumm' end end auto1 = Auto.new auto1.beschleunigen Brumm => nil
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
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. 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. 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. 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. 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. 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. 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. 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
28. Ruby on Rails Ruby on Rails Die 1. Regel im Rails Club lautet: Don‘t repeat yourself
29. Ruby on Rails Ruby on Rails Die 2. Regel im Rails Club lautet: Don‘t repeat yourself
30. Ruby on Rails DRY "Don't repeat yourself"- Prinzip (DRY): Bsp: In Rails ist kein explizites Datenbankschema nötig, um mit der Datenbank zu kommunizieren, da die Datenbank direkt ausgewertet wird.
31. Ruby on Rails MVC Best practices REST Convention over configuration DRY OOP Active Record CRUD
32. Ruby on Rails MVC Rails verwendet das Modell-View-Controller-Muster (MVC), welches die Schichten der Anwendung sauber in Verantwortungsbereiche aufteilt
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. Ruby on Rails MVC Model Controller Browser View Database
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.
37. Ruby on Rails Active Record Patient +name +email +date_of_birth +age +gender Datenbank
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. Ruby on Rails Models class Patient< ActiveRecord::Base end class Encounter< ActiveRecord::Base end class Physician< ActiveRecord::Base end
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. 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. 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. 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. 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
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.
53. Ruby on Rails Action Controller class PatientController < ApplicationController def index @patient = Patient.find :first @title = 'Patient Detail' @homepage_title = "Patient: #{@patient.name}" end end
54. Ruby on Rails Intelligente Architektur Jede Rails-Anwendung hat eine identische Dateistruktur, es sind kaum Konfigurationsanpassungen nötig.
55. Ruby on Rails Struktur app/ components/ config/ db/ doc/ lib/ log/ public/ script/ test/ tmp/ vendor/ ruby projekt1
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. Ruby on Rails Scaffolding Klasse Datenbanktabelle Methoden Datenbankfelder Objekt Datensatz
58. Ruby on Rails Konvention über Konfiguration DB Tabelle ‚entries‘ Klasse ‚Entry‘
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. Ruby on Rails CRUD Create: create, new Read: find, find_by_<attr> Update: save, update_attributes Delete: destroy
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. Ruby on Rails Web 2.0 inklusive Techniken wie AJAX und visuelle Effekte sind von Haus aus mit wenigen Zeilen nutzbar.. Ajax Eye Candy
64. Ruby on Rails Installation Instant Rails/ Locomotive Windows MacPorts/ Quellen Mac Quellen Linux
65.
66.
67.
68.
69.
70.
71. Ruby on Rails RoR Editoren SciTE 3rdRail Aptana jEdit Eclipse vim emacs RadRails
72. Ruby on Rails ROR Vorteile + Sehr schnelle Ergebnisse v.a bei CRUD Applikationen + nimmt Entwicklern Routinearbeiten ab + Automatische Verwendung von Best Practices
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. 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. 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. 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. Ruby on Rails ROR Nachteile - Deployment ist kompliziert - Größtes Problem: Performance & Skalierbarkeit - Teilweise erheblicher Erstaufwand - (noch) nicht sehr weit verbreitet (Hosting)