An Introduction to Ruby On Rails

Post on 25-Apr-2015

8.075 views 0 download

description

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

Transcript of An Introduction to Ruby On Rails

Ruby On RailsA Web Application Framework

1

ÜberblickWiederholgung Ruby

Einführung in Rails

Installation und Einrichtung

“Hello World”

Real World Example

Weitere Features

Ressourcen

2

Wiederholung Ruby

3

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

Wichtigste Eigenschaften

Interpretierte Skriptsprache

Aktuell ist Ruby 1.8.2

Komplett Objekt-Orientiert

Dynamische Typbindung

Verfügbar über GPL oder eigene Lizenz

5

5.times do puts “ruby ist cool”.upcase end

Output:RUBY IST COOLRUBY IST COOLRUBY IST COOLRUBY IST COOLRUBY IST COOL

6

GrundregelnKein 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

a = 9b = 1c = a + bprint c ; c = “Hi”; print cd = c.length + c.index(”i”)c = -99.absein_string = String.new(”HALLO”)auch_ein_string = ‘a’ + “bcdefg #{c}”

8

Funktionen/Methoden

Einleitung mit

def funktions_name(argument)

....

end

implizites return des letzten Ausdruckes (wie überall in Ruby)

9

def my_func puts “abc” 99enddef my_func2(a, b) return a+benddef a; “a”; end

ergebnis = my_func(1,2)a()

10

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 endend

a = Person.newif a.check_alter(90) puts “jung genug”end 11

class Person def Person.how_many @@anzahl_auf_der_welt endend

anzahl = Person.how_many

12

Iteratoren

Iteratoren sind Funktionen, die Blocks repetitiv aufrufen

Finden dort Einsatz, wo andere Sprachen normalerweise Schleifen nutzen würden

Intuitiv zu benutzten

13

5.times { puts “Hi”}

a = [1, 2]a.each do |the_one| print the_oneend

[”H”, “A”, “L”].collect {|x| x.succ} --> [”I”, “B”, “M”]

[1, 2, 3, 5, 7, 9].find {|v| v*v > 30} --> 7

14

begin

funktion_die_schief_laufen_kann(1,2,”aaa”)

rescue StandardError

puts “Fehler aufgetreten”

ensure

puts “wird immer ausgeführt”

end

15

Ruby on Rails

16

Einführung

Ruby on Rails

Framework für Web-Anwendungen

Model-View-Controller Ansatz

Nur eine Konfigurationsdatei: Datenbank Zugangsdaten

Convention over configuration

17

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

Model

Klasse, die das Business-Objekt abbildet mit allen seinen Funktionalitäten

BSP:

Klasse Benutzer

Klasse Buch

19

ViewEigentliche 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

ControllerVerbindung 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

Rails-Architektur

22

Active Record

Model

Verbindet Ruby-Klasse mit Daten aus der Datenbank

Bereitstellung von Funktionen zur Manipulation der Daten in der DB

23

Action Controller

Controller

Bietet die eigentlichen Funktionalitäten an, mit denen der Benutzer interagiert

Lädt den passenden Action View

24

Action View

View

Ruby Template

HTML mit ERb-tags

Das was der Benutzer zu sehen bekommt

25

Installation und Einrichtung

26

Was brauchen wir?

Ruby

rubygems zum Installieren von gems

Rails & co rubygems

Datenbank

Webserver

27

Ruby

Windows Binary Installer:

http://rubyforge.org/projects/rubyinstaller/

UNIX:

RPM, DEB, Sourcen, Port,...

28

Rubygems

Paketverwaltung für Bibliotheken (vgl. CPAN und PEAR)

Verwaltung von Paketen

gem install NAME

gem update

u.s.w....

29

Rails

Unser Eigentliches Framework

Installation über rubygems

gem install rails

30

Datenbank

Rails unterstützt folgende Datenbanken:

MySQL

PostgreSQL

SQLite

Sybase

Oracle

MSSQL31

Webserver

Rails kommt mit eigenem Webserver, WEBrick

Ansonsten:

CGI --> Jeder Webserver mit CGI

mod_ruby + Apache

FCGI für Apache oder Lighttpd

32

Hello World

33

Erste Schritte

Daten-Struktur

Konfiguration und Environments

Kontrollfluß

“Hello World” ausgeben

34

Applikation erstellen# rails myapplication

# ls myapplication/

35

Datenbank Verbindungconfig/database.yml

36

UmgebungenDevelopment

Standard

Loggin an, caching aus, debug an

Production

Loggin an, caching an, debug aus

Test

alles aus 37

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

Scaffold GeneratorGeneriert Standard Views und Controller für Model:

New

Edit

List

Destroy

Nützlich für den Anfang39

Controller generieren# ruby script/generate controller sagwas

40

Action einfügen# vi app/controller/sagwas_controler.rb

41

Webserver starten# ruby script/server

42

Browser starten

http://server/controller/action/[argumente]

43

Real World Example

44

OnlineShop in Rails

Funktionalität

Admin: Einstellen und Bearbeiten von Artikeln

Store: Ansehen und Warenkorb

Admin: Bestellungen bearbeiten

45

Vorgehen - Admin

Erstellen von DB-Tabellen

Generieren von Model+Controller

Validieren eines gültigen Artikels

46

# rails depot

# cd depot

# vi config/database.yml

# ruby script/generate scaffold Product Admin

47

Validation

ActiveRecord bietet Validierungsfunktionen an, die vor dem Speichern aufgerufen werden:

validate_presence_of :name, :vorname

48

Validation

49

Anpassen der Templates

Templates sind RHTML, d.h HTML + Ruby code:

<% normaler rubycode %>

<%= ergebnis wird ausgegeben %>

<%=h ergebnis wird HTML escaped %>

50

Weitere Features

51

The Web, V2.0

Rails integriert JavaScript Bibliotheken, die folgenes ermöglichen:

Ajax

Effects

52

The Web, V2.0 - AJAX

53

The Web, V2.0 - AJAX

54

The Web, V2.0

DEMO

55

Remote Debugging

Über ruby script/console bekommt man eine IRB session zur Rails-Umgebung

Das geht auch remote!

56

Sicherheit

Schutz gegen CSS/XSS mit <%h .... %>

Schutz gegen SQLInjection mit

User.find(:all, conditions =>

[“name=?”, #{params[:name]}]

57

Caching

Rails bietet von sich aus drei Caching Einstellung

Page caching

Action caching

Fragment caching

58

ActionMail

Senden und Empfangen von Mail in RailsApplikationen

Senden über Templates

59

Ressourcen

60

Mailing Listen

ruby-talk@ruby-lang.org

rails@lists.rubyonrails.com

61

Webseiten

www.rubyonrails.com

poignantguide.net/ruby

mir.aculo.us / script.aculo.us

62

Bücher

Programming Ruby

Agile Web Development with Rails

63

Fin

64

Fragen?