• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ruby On Rails Einführung
 

Ruby On Rails Einführung

on

  • 40,460 views

Introduction to the Ruby on Rails Web Framework (German)

Introduction to the Ruby on Rails Web Framework (German)

Statistics

Views

Total Views
40,460
Views on SlideShare
35,541
Embed Views
4,919

Actions

Likes
14
Downloads
383
Comments
2

21 Embeds 4,919

http://reinholdweber.com 3771
http://www.informatik-student.de 927
http://www.slideshare.net 93
http://www.reinholdweber.com 43
http://www.lylug.org 20
http://www.techgig.com 13
http://www.fiae.eu 12
http://translate.googleusercontent.com 11
http://han4u.blogspot.com 10
http://5olio.com 4
http://hackety.org 3
http://codezine.jp 2
http://silveiraneto.net 2
http://209.85.135.104 1
http://sobrerailes.com 1
http://phpbarcelona.org 1
http://paper.li 1
http://localhost:3000 1
http://duckduckgo.com 1
https://twitter.com 1
http://dennyc.tumblr.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • nice
    Are you sure you want to
    Your message goes here
    Processing…
  • best
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ruby On Rails Einführung Ruby On Rails Einführung Presentation Transcript

    • Ruby on Rails Ruby on Rails http://reinholdweber.com – reinhold.weber@gmx.net
    • Ruby on Rails
      • Inhalt
      • Einführende Beispiele
      • Ruby
      • Rails
      • Live Beispiel
    • Ruby on Rails Ruby Interpretierte, objektorientierte & dynamisch typisierte Skriptsprache Rails Fullstack MVC WebApplication Framework
    • Ruby on Rails „ Makes Php look like Assembler “ Ruby IRC Channel
    • Ruby on Rails „ Nachahmung ist die höchste Form der Anerkennung “
    • Ruby on Rails Rails Nachbildungen in PHP solar Seagull Zend Framework symfony CakePHP Prado ZooP WACT CodeIgniter
    • Ruby on Rails Library Modul, das eine bestimmte Funktionalität anbietet eZComponents / PEAR Plattform, auf der man seine Anwendung aufbauen kann Ruby on Rails / CakePHP / .NET / Django Framework
    • Ruby on Rails Basecamp Twitter Mephisto Measuremap Odeo Highrise 43 Places Backpack shopify Rails Anwendungen
    • Ruby on Rails Ruby eine dynamische, freie Programmiersprache, die sich einfach anwenden und produktiv einsetzen lässt. Sie hat eine elegante Syntax , die man leicht lesen und schreiben kann.
    • Ruby on Rails Ruby - Japan 1995, Yukihiro Matsumoto - Open Source - Mischung aus Perl, Smalltalk, Eiffel, Ada und Lisp - Hohe Qualität der Bibliotheken - Wenige aber hochwertige Literatur
    • Ruby on Rails Ruby charakteristika
    • Ruby on Rails Ruby - Generisch, interpretiert, reflektiert, mit Garbage Collector - Eher auf Menschen als auf Computer optimiert - Mächtiger als Perl, objektorientierter als Python - Alles ist ein Objekt, keine primitiven Datentypen - Starke dynamische Typisierung
    • Ruby on Rails Alles ist ein Objekt String = String.new 5.times do puts „Hello World“ end Hello World Hello World Hello World Hello World Hello World => 5
    • Ruby on Rails Alles ist ein Objekt 1.upto(100) { |i| puts i } 3.141.ceil 2.718.floor 1 2 3 … 100 => 1 => 4 => 2
    • Ruby on Rails Alles ist ein Objekt rand.to_s [2..10] validates_each :href, :on => :create do |record, attr, value| begin uri = URI.parse(value) if uri.class != URI::HTTP record.errors.add(attr, 'Only HTTP protocol addresses can be used') end rescue URI::InvalidURIError record.errors.add(attr, 'The format of the url is not valid.') end end
      • 8digit long
      • random number
    • Ruby on Rails Alles ist ein Objekt class Auto def beschleunigen puts 'Brumm' end end auto1 = Auto.new auto1.beschleunigen Brumm => nil
    • Ruby on Rails Alles ist ein Objekt class GutesAuto < Auto def bremsen puts 'Quietsch' end end auto2 = GutesAuto.new auto2.beschleunigen auto2.bremsen Brumm Quietsch => nil
    • Ruby on Rails Ruby Syntax a = [1, 'hi', 3.14, 1, 2, [4, 5]] a[2] # 3.14 a.reverse # [[4, 5], 2, 1, 3.14, 'hi', 1] a.flatten.uniq # [1, 'hi', 3.14, 2, 4, 5]
    • Ruby on Rails PHP  Ruby Gemeinsamkeiten + auch dynamisch typisiert + es gibt Klassen und Zugriffsmodifizierer (public, protected, private) + heredoc Syntax - Exceptions wie in PHP 5
    • Ruby on Rails PHP  Ruby Gemeinsamkeiten + große Standardbibliothek + true und false wie in PHP, null = nil + einige Variablen beginnen mit $ + String Interpolation „ $foo is a $bar” --- ”#{foo} is a #{bar}”
    • Ruby on Rails PHP  Ruby Unterschiede - hat strenge Typisierung to_s, to_i - Strings, Zahlen, Arrays und Hashes sind Objekte Statt abs(-1) hier -1.abs - Klammern in Methodenaufrufen sind optional - keine abstract oder interface Klassen
    • Ruby on Rails Java  Ruby Gemeinsamkeiten + Speicher wird von einem Garbage-Collector verwaltet + Werkzeuge zur Dokumentation: RDoc + Objekte sind stark getypt + es gibt Klassen und Zugriffsmodifizierer (public, protected, private)
    • Ruby on Rails Java  Ruby Unterschiede - muss nicht kompiliert werden - verschiedene GUI Toolkits z.B. WxRuby - require statt import - Klammern in Methodenaufrufen optional get_books
    • Ruby on Rails Java  Ruby Unterschiede - Alle Instanzvariablen sind privat, Zugriff nur über Methoden - Keine statische Typprüfung - keine Typdeklarationen notwendig a = [1,2,3] statt int[] a = [1,2,3]; - keine Typumwandlung (Typecasting)
    • Ruby on Rails Java  Ruby Unterschiede - Konstruktor heißt immer initialize anstatt Klassenname - Mixins anstelle von Interfaces - self anstatt this - Unit-Testing noch einfacher
    • Ruby on Rails Rails - Dänemark 2004, David Heinemeier Hansson - Open Source MIT Lizenz - 15 Core Entwickler - Fullstack MVC WebFramework - Wurde aus bestehender Anwendung extrahiert
    • Ruby on Rails Ruby on Rails philosophie
    • Ruby on Rails Ruby on Rails Die 1. Regel im Rails Club lautet: Don‘t repeat yourself
    • Ruby on Rails Ruby on Rails Die 2. Regel im Rails Club lautet: Don‘t repeat yourself
    • Ruby on Rails DRY &quot;Don't repeat yourself&quot;- Prinzip (DRY): Bsp: In Rails ist kein explizites Datenbankschema nötig, um mit der Datenbank zu kommunizieren, da die Datenbank direkt ausgewertet wird.
    • Ruby on Rails MVC Best practices REST Convention over configuration DRY OOP Active Record CRUD
    • Ruby on Rails MVC Rails verwendet das Modell-View-Controller-Muster (MVC), welches die Schichten der Anwendung sauber in Verantwortungsbereiche aufteilt
    • Ruby on Rails MVC Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
    • Ruby on Rails MVC Model Controller Browser View Database
    • Ruby on Rails M VC - Model Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
    • Ruby on Rails Active Record
      • ein Object-Relational Mapper (ORM)
      Klasse  Datenbanktabelle Methoden  Datenbankfelder Objekt  Datensatz
    • Ruby on Rails Active Record Patient +name +email +date_of_birth +age +gender  Datenbank
    • Ruby on Rails Active Record::Base#Find class Patient< ActiveRecord::Base end Patient.find(1) SELECT * FROM patients WHERE id = 1 Patient.count SELECT COUNT(*) AS count Patient.find_by_name ‘Reinhold Weber‘ SELECT * FROM patients WHERE name = ‚Reinhold Weber‘ Patient.find_by_date_of_birth ‘1985-07-08‘ SELECT * FROM patients WHERE date_of_birth = ‚1985-07-08‘
    • Ruby on Rails Models class Patient< ActiveRecord::Base end class Encounter< ActiveRecord::Base end class Physician< ActiveRecord::Base end
    • Ruby on Rails Associations class Patient< ActiveRecord::Base has_many :encounters has_many :physicians, :through => :encounters end class Encounter< ActiveRecord::Base belongs_to :patient belongs_to :physician end class Physician< ActiveRecord::Base has_many :encounters has_many :patients, :through => :encounters end
    • Ruby on Rails Sensible Defaults class Patient < ActiveRecord::Base has_many :encounters, :class_name => 'Encounter', :foreign_key => 'patient_id' has_many :physicians, :through => encounters, :class_name => 'Physician', :foreign_key => 'physician_id' end
    • Ruby on Rails Sensible Defaults class Encounter < ActiveRecord::Base belongs_to :patient, :class_name => 'Patient', :foreign_key => 'patient_id' belongs_to :physician, :class_name => 'Physician', :foreign_key => 'physician_id' end
    • Ruby on Rails Sensible Defaults class Physician < ActiveRecord::Base has_many :encounters, :class_name => 'Encounter', :foreign_key => 'patient_id' has_many :patients, :through :encounters :class_name => 'Patient', :foreign_key => 'patient_id' end
    • Ruby on Rails M V C - View Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
    • Ruby on Rails View
      • Modul aus der ActionPack Bibliothek
      • welches eine Antwort für den Client rendert
      • entscheidet, welches Template und/oder Partial
      • und Layout benutzt wird
      • Templates benutzen helper Methoden um Links,
      • Formulare und JavaScript zu generieren und Text
      • zu formatiieren
    • Ruby on Rails Templates
      • Vorlagen befinden sich in app/view/controller_name, .
      • Z.B. die Vorlagen für start::PatientController
      • befinden sich unter app/views/start/patient
      • Vorlagen, die von mehreren Controllern benutzt werden
      • befinden sich in app/views/shared
    • Ruby on Rails Templates
      • rhtml - die am häufigsten vorkommende Variante
      • für HTML. HTML Dateien mit eingebettetem Ruby,
      • die die ERb Bibliothek benutzen
      • rxml - Dateien mit Ruby code, die die Builder Bibliothek
      • benutzen um XML zu generieren, wird normalerweise für
      • RSS/Atom benutzt
      • rjs - Ruby Code mit einer Rails spezifischen API, die JavaScript
      • generiert. Wird benutzt für AJAX
    • Ruby on Rails Partials
      • Partials sind Templates, die nur einen Teil einer Seite
      • generieren wie z.B. einen Header oder Footer
      • Partials helfen dabei Seitenelemente wiederzuverwenden
      • funktionieren genauso wie Page Templates (views),
      • laufen in derselben Umgebung und sind
      • im selben Verzeichnis
      • Dateinamen beginnen mit einem underscore
      • _header
    • Ruby on Rails Helpers
      • Helpers sind Ruby Module mit Methoden,
      • die in den Templates verfügbar sind
      • Helpers können Duplikate verhindern und minimieren
      • den Code in den Templates
      • Jeder Controller hat per default einen
      • korrespondierenden helper unter
      • app/helpers/controller_name_helper.rb
    • Ruby on Rails View <html> <head> <title><%= @title %></title> </head> <body> <h1><%= @homepage_title %></h1> <strong>Patient:</strong> <li>Name: <%= @patient.name %></li> <%= render :partial => 'patient_details' %> </body> </html>
    • Ruby on Rails MV C - Controller Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
    • Ruby on Rails Action Controller
      • Trennung von Business Logik
      • & Präsentation
      • Idealerweise sollte keinerlei Logik
      • in der Präsentationsschicht sein
      • Controller sind Ruby Klassen und befinden sich in
      • app/controllers
    • Ruby on Rails Action Controller class PatientController < ApplicationController def index @patient = Patient.find :first @title = 'Patient Detail' @homepage_title = &quot;Patient: #{@patient.name}&quot; end end
    • Ruby on Rails Intelligente Architektur Jede Rails-Anwendung hat eine identische Dateistruktur, es sind kaum Konfigurationsanpassungen nötig.
    • Ruby on Rails Struktur app/ components/ config/ db/ doc/ lib/ log/ public/ script/ test/ tmp/ vendor/ ruby projekt1
    • Ruby on Rails Scaffolding Mit wenigen Befehlen kann eine komplette Administrationsoberfläche zum Erstellen, Bearbeiten und Löschen von Datenbankeinträgen erstellt werden. Rails erzeugt automatisch den Programm- und HTML-Code, der sukzessive um individuelle Funktionalität erweitert werden kann.
    • Ruby on Rails Scaffolding Klasse  Datenbanktabelle Methoden  Datenbankfelder Objekt  Datensatz
    • Ruby on Rails Konvention über Konfiguration DB Tabelle ‚entries‘  Klasse ‚Entry‘
    • Ruby on Rails Migrations Ein Weg das Datenbankschema zu entwickeln Migrations benutzen eine datenbankunabhängige Ruby API Migration Klassen erben von ActiveRecord::Migration script/generate migration
    • Ruby on Rails CRUD Create: create, new Read: find, find_by_<attr> Update: save, update_attributes Delete: destroy
    • Ruby on Rails Schnelles Feedback Ruby-Code wird zur Laufzeit interpretiert, Live-Änderungen an der Datenbankstruktur sind während der Entwicklung ohne Server-Neustart möglich.
    • Ruby on Rails Web 2.0 inklusive Techniken wie AJAX und visuelle Effekte sind von Haus aus mit wenigen Zeilen nutzbar.. Ajax Eye Candy
    • Ruby on Rails Ruby on Rails installation
    • Ruby on Rails Installation Instant Rails/ Locomotive  Windows MacPorts/ Quellen  Mac Quellen  Linux
    • Ruby on Rails Installation Ruby
      • rubyonrails.org/down
      • Windows Installer runterladen, welcher
      • Ruby und einige Extensions enthält
      • - Alle Komponenten installieren
    • Ruby on Rails Installation Rails
      • Installierte Ruby Version ausgeben
      • ruby -v
      • Über RubyGem, das Paketverwaltungssystem
      • von Ruby, Rails installieren
      • gem install rails --include-dependencies
    • Ruby on Rails Projekt anlegen
      • Neues Projekt erzeugen
      • ruby> rails cookbook
      • Server (WEBrick)
      • starten
      • rubycookbook> ruby script/server
      • http://localhost:3000/
    • Ruby on Rails Projekt konfigurieren
      • Datenbank Konfiguration
      • cookbook/config/database.yml
      • Server (WEBrick) neustarten
      • ruby script/server
      • http://localhost:3000/
    • Ruby on Rails Projekt konfigurieren
      • Datenbank anlegen
      • DB: cookbook Tb: recipes
      • Model generieren
      • rubycookbook> ruby script/generate model Recipe
    • Ruby on Rails Projekt konfigurieren
      • Datenbank anlegen
      • DB: cookbook Tb: recipes
      • Conroller generieren
      • rubycookbook> ruby script/generate controller Recipe
    • Ruby on Rails RoR Editoren SciTE 3rdRail Aptana jEdit Eclipse vim emacs RadRails
    • Ruby on Rails ROR Vorteile + Sehr schnelle Ergebnisse v.a bei CRUD Applikationen + nimmt Entwicklern Routinearbeiten ab + Automatische Verwendung von Best Practices
    • Ruby on Rails ROR Vorteile + Organisierte Struktur der Anwendung + Viel Unterstützung durch freiwillige Supporter und Programmierer + Code läuft auf verschiedenen Plattformen mit minimalen Anpassungen
    • Ruby on Rails ROR Vorteile + 10-mal schnellere Ergebnisse als vergleichbare Java Framworks + Source-Code bleibt schlank – ca. 50% kleiner als ein vergleichbares PHP-Programm + Wartung der Software wird durch MVC, DRY, OOP viel einfacher, speziell bei großen Projekten
    • Ruby on Rails ROR Vorteile + Integriertes Test-Framework unterstützt automatisiertes Testen der Applikation. Dadurch können Fehlfunktionen von Anfang an minimiert werden + Web-Sicherheit ist integraler Bestandteil von Ruby on Rails + Web-2.0 (Ajax) fähig
    • Ruby on Rails ROR Nachteile - Völlige Abhängigkeit vom Framework - Je spezieller die Applikation, je weniger Vorteile - Teilweise erheblicher Erstaufwand - (noch) nicht sehr weit verbreitet (Hosting)
    • Ruby on Rails ROR Nachteile - Deployment ist kompliziert - Größtes Problem: Performance & Skalierbarkeit - Teilweise erheblicher Erstaufwand - (noch) nicht sehr weit verbreitet (Hosting)
    • Ruby on Rails Lernen von Rails
      • Entwickeln nach Code Standards und Best Practices
      • Convention over Configuration
      • - MVC, DRY Ansatz für Webanwendungen
      • - Test Driven Development
      • - Einsatz von OOP
    • Ruby on Rails Ruby on Rails ressourcen
    • Ruby on Rails WWW - rubyonrails.com/ - wiki.rubyonrails.org/rails - api.rubyonrails.org/ - (noch) nicht sehr weit verbreitet (Hosting)
    • Ruby on Rails Bücher
      • Agile Web Development with Rails – DHH
      • - Rails Recipes – Chad Fowler
      • - why's (poignant) guide to Ruby - http://poignantguide.net/ruby/
    • Ruby on Rails Q & A