3. Über uns
• internes Entwicklerteam von Sales-Lentz
• IBEs für Reisen, Bustickets, Eventtickets
• seit 2006 entwickeln wir mit Ruby on Rails
• Buch Ruby on Rails 2 Galileo Press
http://www.railsbuch.de
http://twitter.com/ajnato
http://twitter.com/HusseinMorsy
6. Konferenzen 2009
• RailsConf 2009, Las Vegas 4.-7.Mai
• Ruby on OS X, Amsterdam 15. Mai
• Apple WWDC, San Francisco 8.-12. Juni
• Rails-Konferenz*, Offenbach 1-2. September
• RubyEnRails, Amsterdam 30.-31. Oktober
• Rails Usergroup*, Uni Düsseldorf monatlich
14. Webapplikationen
• Client-Server Architektur
• Keine Installation proprietärer Software
• Nur Webbrowser und eine
Internetverbindung notwendig
• Einfach zu testen, da Output Text (HTML)
ist
15. Entwicklungsprinzipien
• Software, die gebraucht wird (Software that
matters)
• Software, die pünktlich geliefert wird
• Software, die innerhalb des Budgets
ausgeliefert wird
• Software, die dem Benutzer die Arbeit
erleichtert
16. ...und das Wichtigste
Software, die den Kunden und den
Programmierer glücklich macht
19. Agile
Softwareentwicklung
• Entwurfsphase auf ein Mindestmaß
reduzieren
• so früh wie möglich zu ausführbarer
Software gelangen
• regelmäßig, in kurzen Abständen deployen
• regelmäßig, in kurzen Abständen mit dem
Kunden besprechen
• Gegensatz z.B. zum Wasserfallmodell
26. Vorteile von Ruby
• rein objektorientiert, keine skalaren
Datentypen
• Interpretersprache (=> sehr dynamisch)
• Humansprache
• wurde entwickelt, um Programmierer
glücklich zu machen
puts car.wheels
# 3
puts 3.odd?
# true
27. DSL mit Ruby
• DSL = Domain Specific Language
• Für jede Domäne (Arbeitsgebiet) ein
eigenes Vokabular
class Meeting < ActiveRecord::Base
has_many :attendees
validates_presence_of :title
validates_numericality_of :room_nr
end
28. Yukihiro Matsumoto
• 44 jähriger, japanischer
Wissenschaftler und
Programmierer
• Erfinder von Ruby 1995
• Spitzname Matz
29. JRuby
• Ruby-Interpreter/Compiler in Java
• Alternative zur Sprache Java , Groovy,...
• JRuby-Code kann in bestehende Java-
Projekte eingesetzt werden
• Einfaches Deployment auf der Java-
Plattform
• Wird im Enterprise-Bereich aktiv
eingesetzt (u.a. bei ThoughtWorks)
35. Java-Frameworks vs.
Rails
• Konfigurationsdatei eines Java-Programms
so gross wie gesamtes Rails-Programm
• Alle Subframeworks enthalten
• Mit Rails können 80% der Aufgaben gelöst
werden
• Nicht für Desktop-Applikationen geeignet
39. Was ist TDD
• Hauptmerkmal: Test First
• Zuerst der Test dann der Code
40. Was ist TDD
• Hauptmerkmal: Test First
• Zuerst der Test dann der Code
• Von innen nach aussen
41. Was ist TDD
• Hauptmerkmal: Test First
• Zuerst der Test dann der Code
• Von innen nach aussen
• TDD ist kein Test-Tool, sondern eine
Technik für Entwickler
42. Units
Views Views Views Views
Controller Controller Controller
Model Model Model Model Model
46. Was ist BDD
• BDD ist kein Ersatz für TDD
• TDD ist ein Bestandteil von BDD
47. Was ist BDD
• BDD ist kein Ersatz für TDD
• TDD ist ein Bestandteil von BDD
• BDD bedeutet outside-in Entwicklung
48. Was ist BDD
• BDD ist kein Ersatz für TDD
• TDD ist ein Bestandteil von BDD
• BDD bedeutet outside-in Entwicklung
• Wie ein User mit der App arbeiten möchte
beeinflusst die Implementierung
49. Was ist BDD
• BDD ist kein Ersatz für TDD
• TDD ist ein Bestandteil von BDD
• BDD bedeutet outside-in Entwicklung
• Wie ein User mit der App arbeiten möchte
beeinflusst die Implementierung
• Kundenwünsche stehen an erster Stelle
50. Outside-In
Views Views Views Views
Controller Controller Controller
Model Model Model Model Model
52. Aslak Hellesøy
David Chelimsky
• Aslak Hellesøy:
Cucumber
• David Chelimsky:
Unit-Testframework RSpec
53. Feature: Booking
As a Customer
I want to book a travel
So that I can spend my holidays with Sales-Lentz
Scenario:....
54. Scenario: booking a Travel
Given a travel “Rhein in Flammen” for 137.40
When I go to the detail page of Rhein in Flammen
And I follow "buchen"
And I select "Herr" from "Anrede"
And I fill in "Nachname" with "Mustermann"
And I fill in "E-Mail" with "hans@mustermann.de"
And I check "Versicherung"
And I press "buchen"
Then I should see "Ihre Buchung"
And I should see "Herr"
And I should see "Mustermann"
And I should see "hans@mustermann.de"
And I should see "137,40 EUR"
But I should not see "Ausgebucht"
55. Feature: Administrationsbereich
Als ein angemeldeter Administrator
Möchte ich die Admin-Seiten besuchen
So dass ich die Seiten leicht aktualisieren kann.
Szenario: Zugang für Admin-Seite beschränken
Gegeben sei ein Admin-User
Wenn ich nicht eingelogged bin
Und ich die Admin-Seite besuche
Dann sollte mir der Zugang verweigert werden
Szenario: Zugang für für autorisierten User
Gegeben sei ein Admin-User
Und ich bin eingelogged als Admin-User
Wenn ich die Admin-Seite besuche
Dann sollte ich "Admin-Bereich" sehen
59. Given-Step mit Definition
Step
Given a travel “Rhein in Flammen” for 137.40
Step-Definition
Given /^a travel "([^"]*)" for ([0-9.]*)$/ do |title, price|
Travel.create(:title => title, :price => price.to_f)
end
60. Given-Step mit Definition
Step
Given a travel “Rhein in Flammen” for 137.40
Step-Definition
Given /^a travel "([^"]*)" for ([0-9.]*)$/ do |title, price|
Travel.create(:title => title, :price => price.to_f)
end
62. Versionsverwaltung
• System zur Erfassung von Änderungen an
Dokumenten
• Zugriff auf die gesamte Historie
• Versionsverwaltungssysteme
• CVS
• SVN
• Mercurial
• Git
63. Git
• Entwickelt von Linus Torvalds (2005)
• Für die Verwaltung des Linux-Kernels
• Besser als svn, cvn etc.
• kein zentraler Server mehr notwendig
• nicht lineare Entwicklung einfach
(branching)
• Sicherheit (z.H. Hash-Wert für commits)
Geschwindigkeit
70. Webdienste rund um
Rails
• GitHub • EngineYard
• lighthouse • Shopify
• hoptoad • ...
• New Relic
• Scout
• Heroku
71. Praktika
• Interessiert, im Rahmen eines Praktikums
mit uns zu arbeiten?
devteam.sales-lentz.lu
tanja.otto@sales-lentz.lu
72. Literatur
• Agile Web Development with Rails (Dave
Thomas, David Heinemeier Hansson)
• Die Programmiersprache Ruby (David
Flanagan,Yukihiro Mastumoto)
• The RSpec Book(David Chelimsky, Dave
Astels, Zach Dennis, Aslak Hellesøy, Bryan
Helmkamp, Dan North)
• Ruby on Rails 2, Hussein Morsy,Tanja Otto.
http://openbook.galileocomputing.de/
ruby_on_rails/