37
Einleitung Ruby Rails Rails und Ajax Fazit Ruby on Rails und Ajax Michael Weimann 14. November 2008 Michael Weimann Ruby on Rails und Ajax

Ruby on Rails und Ajax

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Ruby on Rails und Ajax

EinleitungRubyRails

Rails und AjaxFazit

Ruby on Rails und Ajax

Michael Weimann

14. November 2008

Michael Weimann Ruby on Rails und Ajax

Page 2: 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

Page 3: 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

Page 4: 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

Page 5: 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

Page 6: 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

Page 7: 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

Page 8: 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

Page 9: 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

Page 10: 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

Page 11: 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

Page 12: 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

Page 13: 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

Page 14: 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

Page 15: 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

Page 16: 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

Page 17: 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

Page 18: 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

Page 19: 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

Page 20: 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

Page 21: 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

Page 22: 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

Page 23: 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

Page 24: 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

Page 25: 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

Page 26: 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

Page 27: 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

Page 28: 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

Page 29: 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

Page 30: 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

Page 31: 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

Page 32: 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

Page 33: 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

Page 34: 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

Page 35: 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

Page 36: 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

Page 37: 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