Loading...
Flash Player 9 (or above) is needed to view slideshows. We have detected that you do not have it on your computer.To install it, go here
 
Post to Twitter Post to Twitter
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons
SlideShare is now available on LinkedIn. Add it to your LinkedIn profile.

Ruby On Rails Einführung

From raindoll, 10 months ago Add as contact

Introduction to the Ruby on Rails Web Framework (German)

10924 views | 2 comments | 7 favorites | 218 downloads | 13 embeds (Stats)

Categories

Technology

Groups/Events

Embed in your blog options close
Embed (wordpress.com) Exclude related slideshows Embed in your blog

More Info

This slideshow is Public
Total Views: 10924 on Slideshare: 9828 from embeds: 1096
Most viewed embeds (Top 5): More
Flagged as inappropriate Flag as inappropriate

Flag as inappropriate

Select your reason for flagging this slideshow as inappropriate.

If needed, use the feedback form to let us know more details.

Slideshow Transcript

  1. Slide 1: Ruby on Rails http://reinholdweber.com – reinhold.weber@gmx.net Ruby on Rails
  2. Slide 2: Inhalt 3.Einführende Beispiele 4.Ruby 5.Rails 6.Live Beispiel Ruby on Rails
  3. Slide 3: Ruby Interpretierte, objektorientierte & dynamisch typisierte Skriptsprache Rails Fullstack MVC WebApplication Framework Ruby on Rails
  4. Slide 4: „ Makes Php look like Assembler “ Ruby IRC Channel Ruby on Rails
  5. Slide 5: „ Nachahmung ist die höchste Form der Anerkennung “ Ruby on Rails
  6. Slide 6: Rails Nachbildungen in PHP CakePHP symfony ZooP solar Seagull WACT Prado Zend Framework CodeIgniter Ruby on Rails
  7. Slide 7: Library Modul, das eine bestimmte Funktionalität anbietet eZComponents / PEAR Framework Plattform, auf der man seine Anwendung aufbauen kann Ruby on Rails / CakePHP / .NET / Django Ruby on Rails
  8. Slide 8: Rails Anwendungen Highrise Basecamp Twitter 43 Places Mephisto Odeo shopify Backpack Measuremap Ruby on Rails
  9. Slide 9: Ruby eine dynamische, freie Programmiersprache, einfach anwenden und die sich produktiv einsetzen lässt. Sie hat eine elegante Syntax, die man leicht lesen und schreiben kann. Ruby on Rails
  10. Slide 10: Ruby - Japan 1995, Yukihiro Matsumoto - Open Source - Mischung aus Perl, Smalltalk, Eiffel, Ada und Lisp - Hohe Qualität der Bibliotheken - Wenige aber hochwertige Literatur Ruby on Rails
  11. Slide 11: Ruby charakteristika Ruby on Rails
  12. Slide 12: 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 Ruby on Rails
  13. Slide 13: Alles ist ein Objekt String = String.new 5.times do Hello World Hello World puts „Hello World“ Hello World Hello World end Hello World => 5 Ruby on Rails
  14. Slide 14: Alles ist ein Objekt 1 2 1.upto(100) { |i| puts i } 3 … 100 => 1 3.141.ceil => 4 2.718.floor => 2 Ruby on Rails
  15. Slide 15: Alles ist ein Objekt 8digit long rand.to_s [2..10] random number 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 Ruby on Rails
  16. Slide 16: Alles ist ein Objekt class Auto def beschleunigen puts 'Brumm' end Brumm end => nil auto1 = Auto.new auto1.beschleunigen Ruby on Rails
  17. Slide 17: Alles ist ein Objekt class GutesAuto < Auto def bremsen puts 'Quietsch' end end Brumm Quietsch => nil auto2 = GutesAuto.new auto2.beschleunigen auto2.bremsen Ruby on Rails
  18. Slide 18: 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] Ruby on Rails
  19. Slide 19: PHP Ruby Gemeinsamkeiten + auch dynamisch typisiert + es gibt Klassen und Zugriffsmodifizierer (public, protected, private) + heredoc Syntax - Exceptions wie in PHP 5 Ruby on Rails
  20. Slide 20: 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}” Ruby on Rails
  21. Slide 21: 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 Ruby on Rails
  22. Slide 22: 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) Ruby on Rails
  23. Slide 23: Java Ruby Unterschiede - muss nicht kompiliert werden - verschiedene GUI Toolkits z.B. WxRuby - require statt import - Klammern in Methodenaufrufen optional get_books Ruby on Rails
  24. Slide 24: 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) Ruby on Rails
  25. Slide 25: Java Ruby Unterschiede - Konstruktor heißt immer initialize anstatt Klassenname - Mixins anstelle von Interfaces - self anstatt this - Unit-Testing noch einfacher Ruby on Rails
  26. Slide 26: Rails - Dänemark 2004, David Heinemeier Hansson - Open Source MIT Lizenz - 15 Core Entwickler - Fullstack MVC WebFramework - Wurde aus bestehender Anwendung extrahiert Ruby on Rails
  27. Slide 27: Ruby on Rails philosophie Ruby on Rails
  28. Slide 28: Ruby on Rails Die 1. Regel im Rails Club lautet: Don‘t repeat yourself Ruby on Rails
  29. Slide 29: Ruby on Rails Die 2. Regel im Rails Club lautet: Don‘t repeat yourself Ruby on Rails
  30. Slide 30: 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. Ruby on Rails
  31. Slide 31: MVC Active Record DRY OOP Best practices Convention CRUD over configuration REST Ruby on Rails
  32. Slide 32: MVC Rails verwendet das Modell-View-Controller-Muster (MVC), welches die Schichten der Anwendung sauber in Verantwortungsbereiche aufteilt Ruby on Rails
  33. Slide 33: MVC Model bildet die zugrundeliegende Datenstruktur Das View ist die Darstellung der Datenstruktur Die Controller enthält die eigentliche Programmlogik Der Ruby on Rails
  34. Slide 34: MVC Browser Controller View Model Database Ruby on Rails
  35. Slide 35: MVC - Model Model bildet die zugrundeliegende Datenstruktur Das View ist die Darstellung der Datenstruktur Die Controller enthält die eigentliche Programmlogik Der Ruby on Rails
  36. Slide 36: Active Record -ein Object-Relational Mapper (ORM) Klasse Datenbanktabelle  Methoden  Datenbankfelder Objekt Datensatz  Ruby on Rails
  37. Slide 37: Active Record Patient  +name Datenbank +email +date_of_birth +age +gender Ruby on Rails
  38. Slide 38: 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‘ Ruby on Rails
  39. Slide 39: Models class Patient< ActiveRecord::Base end class Encounter< ActiveRecord::Base end class Physician< ActiveRecord::Base end Ruby on Rails
  40. Slide 40: 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 Ruby on Rails
  41. Slide 41: 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 Ruby on Rails
  42. Slide 42: 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 Ruby on Rails
  43. Slide 43: 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 Ruby on Rails
  44. Slide 44: MVC - View Model bildet die zugrundeliegende Datenstruktur Das View ist die Darstellung der Datenstruktur Die Controller enthält die eigentliche Programmlogik Der Ruby on Rails
  45. Slide 45: View -Modul aus der ActionPack Bibliothek welches eine Antwort für den Client rendert -entscheidet, welches Template und/oder Partial und Layout benutzt wird -Templates benutzen helper Methoden um Links, Formulare und JavaScript zu generieren und Text zu formatiieren Ruby on Rails
  46. Slide 46: Templates -Vorlagen befinden sich in app/view/controller_name, . -Z.B. die Vorlagen für start::PatientController befinden sich unter app/views/start/patient - Vorlagen, die von mehreren Controllern benutzt werden befinden sich in app/views/shared Ruby on Rails
  47. Slide 47: Templates rhtml - die am häufigsten vorkommende Variante - für HTML. HTML Dateien mit eingebettetem Ruby, die die ERb Bibliothek benutzen -rxml - Dateien mit Ruby code, die die Builder Bibliothek benutzen um XML zu generieren, wird normalerweise für RSS/Atom benutzt rjs - Ruby Code mit einer Rails spezifischen API, die JavaScript - generiert. Wird benutzt für AJAX Ruby on Rails
  48. Slide 48: Partials - Partials sind Templates, die nur einen Teil einer Seite generieren wie z.B. einen Header oder Footer -Partials helfen dabei Seitenelemente wiederzuverwenden - funktionieren genauso wie Page Templates (views), laufen in derselben Umgebung und sind im selben Verzeichnis -Dateinamen beginnen mit einem underscore _header Ruby on Rails
  49. Slide 49: Helpers - Helpers sind Ruby Module mit Methoden, die in den Templates verfügbar sind -Helpers können Duplikate verhindern und minimieren den Code in den Templates - Jeder Controller hat per default einen korrespondierenden helper unter app/helpers/controller_name_helper.rb Ruby on Rails
  50. Slide 50: 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> Ruby on Rails
  51. Slide 51: MVC - Controller Model bildet die zugrundeliegende Datenstruktur Das View ist die Darstellung der Datenstruktur Die Controller enthält die eigentliche Programmlogik Der Ruby on Rails
  52. Slide 52: Action Controller - Trennung von Business Logik & Präsentation -Idealerweise sollte keinerlei Logik in der Präsentationsschicht sein -Controller sind Ruby Klassen und befinden sich in app/controllers Ruby on Rails
  53. Slide 53: Action Controller class PatientController < ApplicationController def index @patient = Patient.find :first @title = 'Patient Detail' @homepage_title = \"Patient: #{@patient.name}\" end end Ruby on Rails
  54. Slide 54: Intelligente Architektur Jede Rails-Anwendung hat eine identische Dateistruktur, es sind kaum Konfigurationsanpassungen nötig. Ruby on Rails
  55. Slide 55: app/ Struktur components/ config/ db/ doc/ lib/ ruby projekt1 log/ public/ script/ test/ tmp/ vendor/ Ruby on Rails
  56. Slide 56: 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. Ruby on Rails
  57. Slide 57: Scaffolding Klasse  Datenbanktabelle Methoden  Datenbankfelder Objekt  Datensatz Ruby on Rails
  58. Slide 58: Konvention über Konfiguration DB Tabelle ‚entries‘  Klasse ‚Entry‘ Ruby on Rails
  59. Slide 59: Migrations Ein Weg das Datenbankschema zu entwickeln Migrations benutzen eine datenbankunabhängige Ruby API Migration Klassen erben von ActiveRecord::Migration script/generate migration Ruby on Rails
  60. Slide 60: CRUD Create: create, new Read: find, find_by_<attr> Update: save, update_attributes Delete: destroy Ruby on Rails
  61. Slide 61: Schnelles Feedback Ruby-Code wird zur Laufzeit interpretiert, Live-Änderungen an der Datenbankstruktur sind während der Entwicklung ohne Server-Neustart möglich. Ruby on Rails
  62. Slide 62: Web 2.0 Eye Candy inklusive Ajax Techniken wie AJAX und visuelle Effekte sind von Haus aus mit wenigen Zeilen nutzbar.. Ruby on Rails
  63. Slide 63: Ruby on Rails installation Ruby on Rails
  64. Slide 64: Installation Instant Rails/ Locomotive  Windows MacPorts/ Quellen  Mac Quellen  Linux Ruby on Rails
  65. Slide 65: Installation Ruby -rubyonrails.org/down -Windows Installer runterladen, welcher Ruby und einige Extensions enthält - Alle Komponenten installieren Ruby on Rails
  66. Slide 66: Installation Rails -Installierte Ruby Version ausgeben ruby -v -Über RubyGem, das Paketverwaltungssystem von Ruby, Rails installieren gem install rails --include-dependencies Ruby on Rails
  67. Slide 67: Projekt anlegen -Neues Projekt erzeugen ruby> rails cookbook -Server (WEBrick) starten ruby\\cookbook> ruby script/server http://localhost:3000/ Ruby on Rails
  68. Slide 68: Projekt konfigurieren -Datenbank Konfiguration cookbook/config/database.yml -Server (WEBrick) neustarten ruby script/server http://localhost:3000/ Ruby on Rails
  69. Slide 69: Projekt konfigurieren -Datenbank anlegen DB: cookbook Tb: recipes -Model generieren ruby\\cookbook> ruby script/generate model Recipe Ruby on Rails
  70. Slide 70: Projekt konfigurieren -Datenbank anlegen DB: cookbook Tb: recipes - Conroller generieren ruby\\cookbook> ruby script/generate controller Recipe Ruby on Rails
  71. Slide 71: RoR Editoren jEdit Eclipse SciTE 3rdRail RadRails vim Aptana emacs Ruby on Rails
  72. Slide 72: ROR Vorteile + Sehr schnelle Ergebnisse v.a bei CRUD Applikationen + nimmt Entwicklern Routinearbeiten ab + Automatische Verwendung von Best Practices Ruby on Rails
  73. Slide 73: ROR Vorteile + Organisierte Struktur der Anwendung + Viel Unterstützung durch freiwillige Supporter und Programmierer + Code läuft auf verschiedenen Plattformen mit minimalen Anpassungen Ruby on Rails
  74. Slide 74: 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 Ruby on Rails
  75. Slide 75: 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 Ruby on Rails
  76. Slide 76: ROR Nachteile - Völlige Abhängigkeit vom Framework - Je spezieller die Applikation, je weniger Vorteile - Teilweise erheblicher Erstaufwand - (noch) nicht sehr weit verbreitet (Hosting) Ruby on Rails
  77. Slide 77: ROR Nachteile - Deployment ist kompliziert - Größtes Problem: Performance & Skalierbarkeit - Teilweise erheblicher Erstaufwand - (noch) nicht sehr weit verbreitet (Hosting) Ruby on Rails
  78. Slide 78: Lernen von Rails -Entwickeln nach Code Standards und Best Practices Convention over Configuration - MVC, DRY Ansatz für Webanwendungen - Test Driven Development - Einsatz von OOP Ruby on Rails
  79. Slide 79: Ruby on Rails ressourcen Ruby on Rails
  80. Slide 80: WWW - rubyonrails.com/ - wiki.rubyonrails.org/rails - api.rubyonrails.org/ - (noch) nicht sehr weit verbreitet (Hosting) Ruby on Rails
  81. Slide 81: Bücher -Agile Web Development with Rails – DHH - Rails Recipes – Chad Fowler - why's (poignant) guide to Ruby - http://poignantguide.net/ruby/ Ruby on Rails
  82. Slide 82: Q&A Ruby on Rails