An Introduction to Ruby and Rails - Information Technology Associates
An Introduction to Ruby On Rails
-
Upload
jonathan-weiss -
Category
Business
-
view
8.081 -
download
0
description
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
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?