Click here to load reader

An Introduction to Ruby On Rails

  • View
    8.048

  • Download
    0

Embed Size (px)

DESCRIPTION

An Introduction to the Web framework Ruby on Rails by Jonathan Weiss. Presented for Juniter in 2005.

Text of An Introduction to Ruby On Rails

  • 1. Ruby On Rails A Web Application Framework 1
  • 2. berblick Wiederholgung Ruby Einfhrung in Rails Installation und Einrichtung Hello World Real World Example Weitere Features Ressourcen 2
  • 3. Wiederholung Ruby 3
  • 4. Ruby? Ruby ist eine vollstndig objektorientierte Skriptsprache Das Beste von Perl und Python Public release 1995 durch Yukihiro Matsumoto, a.k.a Matz 4
  • 5. Wichtigste Eigenschaften Interpretierte Skriptsprache Aktuell ist Ruby 1.8.2 Komplett Objekt-Orientiert Dynamische Typbindung Verfgbar ber GPL oder eigene Lizenz 5
  • 6. 5.times do puts ruby ist cool.upcase end Output: RUBY IST COOL RUBY IST COOL RUBY IST COOL RUBY IST COOL RUBY IST COOL 6
  • 7. Grundregeln Kein Semikolon am Ende der Zeile (bei einer Anweisung pro Zeile) Keine geschweiften Klammern zur Deklaration vom Blcken, sondern xxxx......end Keine Deklaration von Variablen! () knnen bei Methoden weggelassen werden 7
  • 8. a=9 b=1 c=a+b print c ; c = Hi; print c d = c.length + c.index(i) c = -99.abs ein_string = String.new(HALLO) auch_ein_string = a + bcdefg #{c} 8
  • 9. Funktionen/Methoden Einleitung mit def funktions_name(argument) .... end implizites return des letzten Ausdruckes (wie berall in Ruby) 9
  • 10. def my_func puts abc 99 end def my_func2(a, b) return a+b end def a; a; end ergebnis = my_func(1,2) a() 10
  • 11. class Person @name #Instanz-var @alter #Instanz-var @@anzahl_auf_der_welt #Klassen-var MAX_ALTER = 100 #Konstante def check_alter(alter) #Instanz-meth alter < Person::MAX_ALTER end end a = Person.new if a.check_alter(90) puts jung genug end 11
  • 12. class Person def Person.how_many @@anzahl_auf_der_welt end end anzahl = Person.how_many 12
  • 13. Iteratoren Iteratoren sind Funktionen, die Blocks repetitiv aufrufen Finden dort Einsatz, wo andere Sprachen normalerweise Schleifen nutzen wrden Intuitiv zu benutzten 13
  • 14. 5.times { puts Hi} a = [1, 2] a.each do |the_one| print the_one end [H, A, L].collect {|x| x.succ} --> [I, B, M] [1, 2, 3, 5, 7, 9].nd {|v| v*v > 30} --> 7 14
  • 15. begin funktion_die_schief_laufen_kann(1,2,aaa) rescue StandardError puts Fehler aufgetreten ensure puts wird immer ausgefhrt end 15
  • 16. Ruby on Rails Einfhrung 16
  • 17. Ruby on Rails Framework fr Web-Anwendungen Model-View-Controller Ansatz Nur eine Konfigurationsdatei: Datenbank Zugangsdaten Convention over configuration 17
  • 18. Model-View-Controller Design-Pattern fr Programme mit Interaktion mit dem Benutzer KLassen werden in drei Gruppen eingeteilt, die sich auf ihre jeweillige Aufgabe spezialisieren Vorteil: Entkopplung und somit Wiederverwendbarkeit 18
  • 19. Model Klasse, die das Business-Objekt abbildet mit allen seinen Funktionalitten BSP: Klasse Benutzer Klasse Buch 19
  • 20. View Eigentliche Darstellung fr den User Keine Funktionalitt, nur Design +Anzeige BSP: Template, dass alle Bcher im System anzeigt Template, dass alle Bcher eines Benutzers anzeigt 20
  • 21. Controller Verbindung zwischen Model und View Ldt bentigte Daten aus dem Model und fttert sie in den View Prozess-Logik BSP: Lade alle Bcher im System und gebe sie dem richtigem Template 21
  • 22. Rails-Architektur 22
  • 23. Active Record Model Verbindet Ruby-Klasse mit Daten aus der Datenbank Bereitstellung von Funktionen zur Manipulation der Daten in der DB 23
  • 24. Action Controller Controller Bietet die eigentlichen Funktionalitten an, mit denen der Benutzer interagiert Ldt den passenden Action View 24
  • 25. Action View View Ruby Template HTML mit ERb-tags Das was der Benutzer zu sehen bekommt 25
  • 26. Installation und Einrichtung 26
  • 27. Was brauchen wir? Ruby rubygems zum Installieren von gems Rails & co rubygems Datenbank Webserver 27
  • 28. Ruby Windows Binary Installer: http://rubyforge.org/projects/ rubyinstaller/ UNIX: RPM, DEB, Sourcen, Port,... 28
  • 29. Rubygems Paketverwaltung fr Bibliotheken (vgl. CPAN und PEAR) Verwaltung von Paketen gem install NAME gem update u.s.w.... 29
  • 30. Rails Unser Eigentliches Framework Installation ber rubygems gem install rails 30
  • 31. Datenbank Rails untersttzt folgende Datenbanken: MySQL PostgreSQL SQLite Sybase Oracle MSSQL 31
  • 32. Webserver Rails kommt mit eigenem Webserver, WEBrick Ansonsten: CGI --> Jeder Webserver mit CGI mod_ruby + Apache FCGI fr Apache oder Lighttpd 32
  • 33. Hello World 33
  • 34. Erste Schritte Daten-Struktur Konfiguration und Environments Kontrollflu Hello World ausgeben 34
  • 35. Applikation erstellen # rails myapplication # ls myapplication/ 35
  • 36. Datenbank Verbindung cong/database.yml 36
  • 37. Umgebungen Development Standard Loggin an, caching aus, debug an Production Loggin an, caching an, debug aus Test alles aus 37
  • 38. Generator Models,Views und Controller knnen per Hand erstellt werden Generator hilft aus: ruby script/generator model Buch ruby script/generator controller Laden 38
  • 39. Scaffold Generator Generiert Standard Views und Controller fr Model: New Edit List Destroy Ntzlich fr den Anfang 39
  • 40. Controller generieren # ruby script/generate controller sagwas 40
  • 41. Action einfgen # vi app/controller/sagwas_controler.rb 41
  • 42. Webserver starten # ruby script/server 42
  • 43. Browser starten http://server/controller/action/[argumente] 43
  • 44. Real World Example OnlineShop in Rails 44
  • 45. Funktionalitt Admin: Einstellen und Bearbeiten von Artikeln Store: Ansehen und Warenkorb Admin: Bestellungen bearbeiten 45
  • 46. Vorgehen - Admin Erstellen von DB-Tabellen Generieren von Model+Controller Validieren eines gltigen Artikels 46
  • 47. # rails depot # cd depot # vi cong/database.yml # ruby script/generate scaffold Product Admin 47
  • 48. Validation ActiveRecord bietet Validierungsfunktionen an, die vor dem Speichern aufgerufen werden: validate_presence_of :name, :vorname 48
  • 49. Validation 49
  • 50. Anpassen der Templates Templates sind RHTML, d.h HTML + Ruby code: 50
  • 51. Weitere Features 51
  • 52. The Web, V2.0 Rails integriert JavaScript Bibliotheken, die folgenes ermglichen: Ajax Effects 52
  • 53. The Web, V2.0 - AJAX 53
  • 54. The Web, V2.0 - AJAX 54
  • 55. The Web, V2.0 DEMO 55
  • 56. Remote Debugging ber ruby script/console bekommt man eine IRB session zur Rails-Umgebung Das geht auch remote! 56
  • 57. Sicherheit Schutz gegen CSS/XSS mit Schutz gegen SQLInjection mit User.find(:all, conditions => [name=?, #{params[:name]}] 57
  • 58. Caching Rails bietet von sich aus drei Caching Einstellung Page caching Action caching Fragment caching 58
  • 59. ActionMail Senden und Empfangen von Mail in RailsApplikationen Senden ber Templates 59
  • 60. Ressourcen 60
  • 61. Mailing Listen [email protected] [email protected] 61
  • 62. Webseiten www.rubyonrails.com poignantguide.net/ruby mir.aculo.us / script.aculo.us 62
  • 63. Bcher Programming Ruby Agile Web Development with Rails 63
  • 64. Fin Fragen? 64