An Introduction to Ruby On Rails

4,710 views
4,631 views

Published on

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

Published in: Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,710
On SlideShare
0
From Embeds
0
Number of Embeds
35
Actions
Shares
0
Downloads
136
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

An Introduction to Ruby On Rails

  1. 1. Ruby On Rails A Web Application Framework 1
  2. 2. Überblick Wiederholgung Ruby Einführung in Rails Installation und Einrichtung “Hello World” Real World Example Weitere Features Ressourcen 2
  3. 3. Wiederholung Ruby 3
  4. 4. Ruby? Ruby ist eine vollständig objektorientierte Skriptsprache Das Beste von Perl und Python Public release 1995 durch Yukihiro Matsumoto, a.k.a “Matz” 4
  5. 5. Wichtigste Eigenschaften Interpretierte Skriptsprache Aktuell ist Ruby 1.8.2 Komplett Objekt-Orientiert Dynamische Typbindung Verfügbar über GPL oder eigene Lizenz 5
  6. 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. 7. Grundregeln Kein Semikolon am Ende der Zeile (bei einer Anweisung pro Zeile) Keine geschweiften Klammern zur Deklaration vom Blöcken, sondern “xxxx......end” Keine Deklaration von Variablen! () können bei Methoden weggelassen werden 7
  8. 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. 9. Funktionen/Methoden Einleitung mit def funktions_name(argument) .... end implizites return des letzten Ausdruckes (wie überall in Ruby) 9
  10. 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. 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. 12. class Person def Person.how_many @@anzahl_auf_der_welt end end anzahl = Person.how_many 12
  13. 13. Iteratoren Iteratoren sind Funktionen, die Blocks repetitiv aufrufen Finden dort Einsatz, wo andere Sprachen normalerweise Schleifen nutzen würden Intuitiv zu benutzten 13
  14. 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].find {|v| v*v > 30} --> 7 14
  15. 15. begin funktion_die_schief_laufen_kann(1,2,”aaa”) rescue StandardError puts “Fehler aufgetreten” ensure puts “wird immer ausgeführt” end 15
  16. 16. Ruby on Rails Einführung 16
  17. 17. Ruby on Rails Framework für Web-Anwendungen Model-View-Controller Ansatz Nur eine Konfigurationsdatei: Datenbank Zugangsdaten Convention over configuration 17
  18. 18. Model-View-Controller Design-Pattern für 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. 19. Model Klasse, die das Business-Objekt abbildet mit allen seinen Funktionalitäten BSP: Klasse Benutzer Klasse Buch 19
  20. 20. View Eigentliche Darstellung für den User Keine Funktionalität, nur Design +Anzeige BSP: Template, dass alle Bücher im System anzeigt Template, dass alle Bücher eines Benutzers anzeigt 20
  21. 21. Controller Verbindung zwischen Model und View Lädt benötigte Daten aus dem Model und füttert sie in den View Prozess-Logik BSP: Lade alle Bücher im System und gebe sie dem richtigem Template 21
  22. 22. Rails-Architektur 22
  23. 23. Active Record Model Verbindet Ruby-Klasse mit Daten aus der Datenbank Bereitstellung von Funktionen zur Manipulation der Daten in der DB 23
  24. 24. Action Controller Controller Bietet die eigentlichen Funktionalitäten an, mit denen der Benutzer interagiert Lädt den passenden Action View 24
  25. 25. Action View View Ruby Template HTML mit ERb-tags Das was der Benutzer zu sehen bekommt 25
  26. 26. Installation und Einrichtung 26
  27. 27. Was brauchen wir? Ruby rubygems zum Installieren von gems Rails & co rubygems Datenbank Webserver 27
  28. 28. Ruby Windows Binary Installer: http://rubyforge.org/projects/ rubyinstaller/ UNIX: RPM, DEB, Sourcen, Port,... 28
  29. 29. Rubygems Paketverwaltung für Bibliotheken (vgl. CPAN und PEAR) Verwaltung von Paketen gem install NAME gem update u.s.w.... 29
  30. 30. Rails Unser Eigentliches Framework Installation über rubygems gem install rails 30
  31. 31. Datenbank Rails unterstützt folgende Datenbanken: MySQL PostgreSQL SQLite Sybase Oracle MSSQL 31
  32. 32. Webserver Rails kommt mit eigenem Webserver, WEBrick Ansonsten: CGI --> Jeder Webserver mit CGI mod_ruby + Apache FCGI für Apache oder Lighttpd 32
  33. 33. Hello World 33
  34. 34. Erste Schritte Daten-Struktur Konfiguration und Environments Kontrollfluß “Hello World” ausgeben 34
  35. 35. Applikation erstellen # rails myapplication # ls myapplication/ 35
  36. 36. Datenbank Verbindung config/database.yml 36
  37. 37. Umgebungen Development Standard Loggin an, caching aus, debug an Production Loggin an, caching an, debug aus Test alles aus 37
  38. 38. Generator Models,Views und Controller können per Hand erstellt werden Generator hilft aus: ruby script/generator model Buch ruby script/generator controller Laden 38
  39. 39. Scaffold Generator Generiert Standard Views und Controller für Model: New Edit List Destroy Nützlich für den Anfang 39
  40. 40. Controller generieren # ruby script/generate controller sagwas 40
  41. 41. Action einfügen # vi app/controller/sagwas_controler.rb 41
  42. 42. Webserver starten # ruby script/server 42
  43. 43. Browser starten http://server/controller/action/[argumente] 43
  44. 44. Real World Example OnlineShop in Rails 44
  45. 45. Funktionalität Admin: Einstellen und Bearbeiten von Artikeln Store: Ansehen und Warenkorb Admin: Bestellungen bearbeiten 45
  46. 46. Vorgehen - Admin Erstellen von DB-Tabellen Generieren von Model+Controller Validieren eines gültigen Artikels 46
  47. 47. # rails depot # cd depot # vi config/database.yml # ruby script/generate scaffold Product Admin 47
  48. 48. Validation ActiveRecord bietet Validierungsfunktionen an, die vor dem Speichern aufgerufen werden: validate_presence_of :name, :vorname 48
  49. 49. Validation 49
  50. 50. Anpassen der Templates Templates sind RHTML, d.h HTML + Ruby code: <% normaler rubycode %> <%= ergebnis wird ausgegeben %> <%=h ergebnis wird HTML escaped %> 50
  51. 51. Weitere Features 51
  52. 52. The Web, V2.0 Rails integriert JavaScript Bibliotheken, die folgenes ermöglichen: Ajax Effects 52
  53. 53. The Web, V2.0 - AJAX 53
  54. 54. The Web, V2.0 - AJAX 54
  55. 55. The Web, V2.0 DEMO 55
  56. 56. Remote Debugging Über ruby script/console bekommt man eine IRB session zur Rails-Umgebung Das geht auch remote! 56
  57. 57. Sicherheit Schutz gegen CSS/XSS mit <%h .... %> Schutz gegen SQLInjection mit User.find(:all, conditions => [“name=?”, #{params[:name]}] 57
  58. 58. Caching Rails bietet von sich aus drei Caching Einstellung Page caching Action caching Fragment caching 58
  59. 59. ActionMail Senden und Empfangen von Mail in RailsApplikationen Senden über Templates 59
  60. 60. Ressourcen 60
  61. 61. Mailing Listen ruby-talk@ruby-lang.org rails@lists.rubyonrails.com 61
  62. 62. Webseiten www.rubyonrails.com poignantguide.net/ruby mir.aculo.us / script.aculo.us 62
  63. 63. Bücher Programming Ruby Agile Web Development with Rails 63
  64. 64. Fin Fragen? 64

×