ruby on rails und ajax
DESCRIPTION
TRANSCRIPT
EinleitungRubyRails
Rails und AjaxFazit
Ruby on Rails und Ajax
Michael Weimann
14. November 2008
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
Was ist Ruby on Rails?Ubersicht
Was ist Ruby on Rails?
Ruby ist eine Programmiersprache
Rails ein Web-Entwicklungs Framework in Ruby implementiert
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
Was ist Ruby on Rails?Ubersicht
Was ist Ruby on Rails?
Ruby ist eine Programmiersprache
Rails ein Web-Entwicklungs Framework in Ruby implementiert
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
Was ist Ruby on Rails?Ubersicht
Ubersicht
1 Ruby
2 Rails
3 Rails und Ajax
4 Fazit
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Ruby
ruby-lang.org
Erfinder Yukihiro “matz” Matsumoto
Einflusse: Perl, Smalltalk, Eiffel, Ada und Lisp
Version 0.95 wurde 1995 veroffentlicht
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Code-Beispiele
Sortieren eines Arrays
[6, 8, 3].sort.reverse=> [8, 6, 3]
Wiederholung fester Anzahl
3.times { puts "Hallo " }=> Hallo Hallo Hallo
Eine For-Schleife (Berechnung 4!)
x = 1for i in 1..4
x = x * iendx => 24
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Variabeln Bezeichner
kann eine lokale Variable sein
ich_bin_eine_lokale_variable
ist eine Instanzvariable
@ich_bin_eine_instanzvariable
ist eine globale Variable
$ich_bin_eine_lokale_variable
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Typisierung: Duck-Typing
Es hort sich an wie eine Ente..
Es sieht aus wie eine Ente..
...also ist es eine Ente!
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Typisierung: Duck-Typing
Es hort sich an wie eine Ente..
Es sieht aus wie eine Ente..
...also ist es eine Ente!
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Typisierung: Duck-Typing
Es hort sich an wie eine Ente..
Es sieht aus wie eine Ente..
...also ist es eine Ente!
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Typisierung: Duck-Typing
Es hort sich an wie eine Ente..
Es sieht aus wie eine Ente..
...also ist es eine Ente!
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Alles ist ein Objekt
Ruby kennt keine primitiven Datentypen
Alle Typen werden als Objekte behandelt
Zahlen sind Objekte
>> erg = 4.next=> 5
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Objektorientierung
eine einfache Klasse
class EinfacheKlassedef einfache_methode(arg)arg.reverse
enddef methode_viele_args(*args)end
end
Instanzierung
>> klasse = EinfacheKlasse.new>> klasse.einfache_methode("hallo")=> "ollah"
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Objektorientierung
zwei wichtige Methoden
respond to
besitzt das Objekt diese Methode?4.respond_to?(:next) => true
method missing
Falls eine Methode aufgerufen wird, welche nicht vorhanden istermoglicht “dynamische Objekte”
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteCode-BeispieleObjektorientierung
Mehr Rubi..
Vererbung, Module, Mixins
Prozeduale- und Funktionale Programmierung
Klammern optional, kein “Anweisungs-fertig-Zeichen”
Alles ist erweiterbar
Regulare Ausdrucke, Arrays, Kontrollstrukturen...
siehe Literatur
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteMVC MusterDas Rails FrameworkPrinzipien
Projektmanagement Software Basecamp
Entwicklung eines Frameworks
Extraktion von Rails aus Basecamp
Version 1.0 wurde 2005 veroffentlicht
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteMVC MusterDas Rails FrameworkPrinzipien
Beispiel
Erstellen eines neuen Rails Projekts:Studenten-Verwaltung
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteMVC MusterDas Rails FrameworkPrinzipien
Model-View-Controller Muster
MVC ist ein Software-Architekturmuster
Model
DatenstrukturenGeschaftslogik
View
DarstellungBenutzerinteraktion
Controller
Vermittlungsschicht Model - View
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteMVC MusterDas Rails FrameworkPrinzipien
Model-View-Controller Muster
MVC ist ein Software-Architekturmuster
Model
DatenstrukturenGeschaftslogik
View
DarstellungBenutzerinteraktion
Controller
Vermittlungsschicht Model - View
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteMVC MusterDas Rails FrameworkPrinzipien
Model-View-Controller Muster
MVC ist ein Software-Architekturmuster
Model
DatenstrukturenGeschaftslogik
View
DarstellungBenutzerinteraktion
Controller
Vermittlungsschicht Model - View
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteMVC MusterDas Rails FrameworkPrinzipien
5 Rails Module
Active Record (Model)
Action Pack
Action View (View)Action Controller (Controller)
Action Mailer
Action Resource
Active Support
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteMVC MusterDas Rails FrameworkPrinzipien
5 Rails Module
Active Record (Model)
Action Pack
Action View (View)Action Controller (Controller)
Action Mailer
Action Resource
Active Support
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteMVC MusterDas Rails FrameworkPrinzipien
5 Rails Module
Active Record (Model)
Action Pack
Action View (View)Action Controller (Controller)
Action Mailer
Action Resource
Active Support
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GeschichteMVC MusterDas Rails FrameworkPrinzipien
Rails Prinzipien
Alles in Rails ist Ruby
Nur Einsatz von Rubykein Umdenken notwendig
Konvention statt Konfiguration
Viele Dinge sind bereits vorgegebenKlasse: Student, Controller: StudentsController...
Wiederhole dich nicht
moglichst wenig Redundanzenz.B. Klasse Student migriert in DB Schema
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
Rails und Ajax
Rails nutzt das Prototype Framework
Komplette Ajax Funktionalitat in Ruby
Durch relativ wenig Aufwand umsetzbar
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
Observer Beispiel
Beispiel - Studenten-VerwaltungLive-Search
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
link to remote
<%= link_to_remote "News loschen",url: => { :action => "delete"},update => ’news’ %>
wird ubersetzt zu
<a href="#" onclick="new Ajax.Updater(’news’, ’/news/delete’,{asynchronous:true, evalScripts:true});return false;">News loschen</a>
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
Observer
Beobachten Objekte
Werden bei Anderung aktiv
Losen eine bestimmte Aktion aus
observe field
siehe Studentenverwaltung
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
observe form
observe_formuberwacht Formulare
Funktioniert analog zu
observe_field
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
Callbacks
Nutzer uber Status der Anfrage informieren
Eigene Aktionen je nach Status
Nutzung von Callbacks = Status des XmlHttpRequest-Objekts
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
Callbacks - Typen
Entspricht den Prototype Callbacks
:beforeVor dem Senden der Anfrage
:loadedDatenempfang abgeschlossen
:successSuccess Response Code
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
Callbacks - Beispiel
Anzeigen eines Lade-Elements (Grafik, Text..)
Callback in Observer
observe_field(......:before => "Element.show(’loading’)")
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
Periodische Aktualisierung
Aufruf in regelmaßigen Abstanden im Hintergrund
periodically_call_remote
Periodisches Aktualisieren
<% periodically_call_remote(:url => ’update’,:frequency => ’5’,:update => ’news’) %>
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
RJS Templates
Sind komplett in Ruby geschrieben (Rails Prinzip)
Werden zur Laufzeit in JavaScript ubersetzt
page.callermoglicht Aufruf einer JavaScript Funktion
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
Ajax JavaScript-Aufrufe
Ubermittlung an RJS Template
submit_to_remote
Ubertragung von JavaScript und Ausfuhrung via
eval()
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
GrundlagenObserverCallbacksmehr AjaxLiteratur und Quellen
Literatur und Quellen
Wartala, Krutisch - Webanwendungen mit Ruby on Rails,Addison-Wesley
http://www.ruby-lang.org/de/ Ruby Home
http://tryruby.hobix.com/ Ruby online Konsole
http://www.rubyonrails.org/ Rails Home
Michael Weimann Ruby on Rails und Ajax
EinleitungRubyRails
Rails und AjaxFazit
Fazit
Pro
Gut geeignet fur agile Softwareentwicklung
Vereinheitlichung durch Konventionen
Einfacher Einsatz von Ajax
Kontra
Wenig Rails-Hoster
(noch) kleine Community
Michael Weimann Ruby on Rails und Ajax