SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Ruby on Rails
  in a metro session...




                          Jesus Villar, jesus at virttoo.org
Über mich
Worum geht's heute?

• Was ist Ruby on Rails?
• Web Frameworks?
• Ruby on Rails Stack
• RoR Arbeitsweise
• Vorteile / Nachteile
Wer kennt bereits RoR?
Ruby on Rails is an open-source web
framework that's optimized for programmer
happiness and sustainable productivity.
It lets you write beautiful code by favoring
convention over configuration.



                                          http://rubyonrails.org/
Historie
• David Heinemeier
  Hansson für Basecamp
  Entwicklung in 2003
• 37signals ist Haupt-
  Sponsor
• MIT Lizenz
• 1.600 Contributors
Ruby on Rails is an open-source web
framework that's optimized for programmer
happiness and sustainable productivity.
It lets you write beautiful code by favoring
convention over configuration.



                                          http://rubyonrails.org/
Aber...




it's not ruby!
Webframeworks
• Fokussierung auf die Applikation -
  Produktivität
• Geschwindigkeit - "Time to market"
• Robustheit
• Wiederverwendung
• Standards (MVC, Objektrelationales
  Mapping, etc.)
Anforderungen an moderne
     Webframeworks
• Objektorientierung
• Templating
• AJAX
• Sicherheit und Robustheit
• Weiterentwicklung und aktive Community
Web Frameworks

   PHP          JAVA       Python      C#
  Zend         Spring      Django     ASP.net
 symfony       Struts    Turbogears
CodeIgniter   Tapestry      Zope

                   Ruby
                Ruby on Rails
Rock n' Roll!
           http://www.flickr.com/photos/stephenpoff/2920198159/
Ruby on Rails Stack

• Ruby
 • Gems
   • Rails
   • Active*
 • DB-Bindings (SQLite, MySQL, Postgres)
Paradigmen

• Model-View-Controller (MVC)
• DRY - Don't repeat yourself
• Convention over configuration
• REST
MVC

• Trennung Geschäftslogik von
  Nutzerschschnittstelle
• Vereinfacht Code-Pflege
• Inhaltliche Zuordung von Code zu
  Funktionalität
DRY

• Don't repeat yourself
• Redundanzen vermeiden bzw. reduzieren
• Änderungen nur an einer Stelle vornehmen
  Pragmatic Programmer (Andy Hunts, Dave Thomas)
Convention over configuration

• Namenskonventionen erleichtern die
  Anwendung
• Beispiel: Model singular, Datenbankname
  Plural, Controller Plural
• Außer der Datenbank Verbindung wird
  nichts konfiguriert
REST
• Jeder Ressource ein spezifischer URI
  zugeordnet
• Unterschiedliche Repräsentationen möglich
  (HTML oder XML)
• Zustandsloses Client/Server-Protokoll
  (HTTP)
• CRUD via PUT, GET, POST, DELETE HTTP
  Methoden
RoR flow chart

            Routing

WebServer             Controller   Model(s)
             View                             Database
Model
•   Hier werden Validierungen vorgenommen
    (validates_presence_of :name)

•   Durch Ableitung von ActiveRecord werden
    automatisch getter/setter für Attribute erzeugt

•   Konvention: Tabellennamen immer Plural vom
    Modellnamen

•   Relationen textuell beschrieben:

    •   1:1 has_one / belongs_to

    •   1:n has_many / belongs_to

    •   n:m has_and_belongs_to_many /
        has_and_belongs_to_many
Controller
•   Controller steuern Ablauf (Routing
    anpassbar)

•   Controller verwalten Modell

•   Jede Methode im Controller entspricht
    einer ausführbaren Action

•   View erhält Daten (für Vorbelegungen)
    über Instanzvariablen

•   Views werden über Konvention vom
    Controller angesprochen bzw. erzeugt

•   Verhalten der Controller kann mit Hilfe
    von Filtern beeinflusst werden (z.B. für
    Autorisierung, Authentifizierung)
View
•   Embedded Ruby (ERB) als Templating-
    Mechanismus

•   Datenzugriff über Instanzvariablen des
    Controllers

•   Inkludierung von Seitenteilen möglich (Partials)

•   Seitenweises blättern (Pagination)

•   Ajax

    •   Scriptaculous u. Prototype sind in Rails per
        Default integriert

    •   RJS (Rails Javascript) kapselt komplexe
        Funktionen
Scaffolding
• Schnelle Ergebnisse
• "Quick and dirty"
  > rails generate scaffold Post
  name:string title:string content:text
  > rake db:migrate
Scaffold Ergebnis
Vorteile / Nachteile
•   Sehr schnelle Ergebnisse v.a bei      •   Völlige Abhängigkeit vom Framework
    CRUD Applikationen
                                          •   Je spezieller die Applikation, je
•   nimmt Entwicklern Routinearbeiten         weniger Vorteile
    ab
                                          •   Performance & Skalierbarkeit
•   Automatische Verwendung von Best
    Practices                             •   Teilweise erheblicher Erstaufwand

•   Organisierte Struktur der Anwendung   •   Aktuell nicht sehr weit verbreitet
                                              (Hosting)
•   Code läuft auf verschiedenen
    Plattformen mit minimalen             •   Deployment ist kompliziert
    Anpassungen

•   Wartung der Software wird durch
    MVC, DRY, OOP einfach
Warum Ruby on Rails?

• Produktivitätskurve - Stunden, nicht
  Wochen
• Schnelle Ergebnisse und Kommunikation
• Eingebaute Datenbankpersistenz
• AJAX Integration
Warum kein RoR?
• Nicht compiliert
• DNA ist webframework, und z.B. kein EAI
• Richtig große Skalierung ist aufwendig
Fragen?

Danke!
www.virttoo.org
Backup
Environments /Umgebungen

• Applikationsname_development
  Entwicklung

• Applikationsname_test
  Testumgebung

• Applikationsname_production
  Produktion
Convention over configuration
•   Datenbanktabelle: libraries

•   Model: Library

•   Controller-Klassenname: LibrariesController

•   Controller-Dateiname: libraries_controller.rb

•   Controller Action: http://example.com/libraries/index

•   Test: LibraryTest

•   Test-Dateiname: LibraryTest

•   DB-Fixture: libraries.yml
Komponenten
• Action Pack
  • Action Controller
  • Action Dispatch
  • Action View
• Active Record
• Action Mailer
• ...
Applikation erstellen
rails new demoapp
...
Gemfile, README, Rakefile,
app, config, config.ru, db,
doc, lib, log, public, script,
test, tmp, vendor
Einen Controller
         erstellen
rails generate controller Greeting

create   app/controllers/greeting_controller.rb
invoke   erb
create   app/views/greeting
invoke   test_unit
create   test/functional/greeting_controller_test.rb
invoke   helper
create   app/helpers/greeting_helper.rb
invoke   test_unit
create   test/unit/helpers/greeting_helper_test.rb
Code-Beispiel Controller
Server starten
#demoapp: rails server
http://localhost:3000
ActiveRecord
•   Repräsentation des Schemas in Datenbank
    unabhängig

•   Änderungen am Schema via Migrationen
    (versioniert)

•   Rails kann mit Hilfe der Version automatisch Up-/
    Down-Migrationen der Datenbank vornehmen

•   Drei Datenbanken: Entwicklung, Test, Produktion
RoR bei Google
RoR vs. the Rest
Quellen
• http://www.rubyonrails.org/
• http://www.rubyonrails.de/
• http://www.slideshare.net/foobar2605/
  einfhrung-in-ruby-on-rails
• http://www.slideshare.net/raindoll/ruby-on-
  rails-einfhrung
Abstract
•   In den vergangenen Jahren hat sich ein neues
    Framework zur Entwicklung von Web-
    Anwendungen in den Vordergrund gebracht. Im
    Rahmen des Vortrags werden die
    Entwicklungsgeschichte, die Philosophie und die
    Möglichkeiten von RoR vorgestellt.

•   Was unterscheidet RoR von anderen Frameworks,
    was macht es erfolgreich, wo hat es seine
    Einschränkungen und warum polarisiert es die
    Entwicklergemeinde?

Weitere ähnliche Inhalte

Was ist angesagt?

May the forge be with you
May the forge be with youMay the forge be with you
May the forge be with youSandro Sonntag
 
Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.David Schneider
 
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenSQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenJan Hentschel
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...Nicole Szigeti
 
CQRS in der Praxis - Newsletter Double-Opt-In
CQRS in der Praxis - Newsletter Double-Opt-InCQRS in der Praxis - Newsletter Double-Opt-In
CQRS in der Praxis - Newsletter Double-Opt-InPHP in DD
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
Service Orchestrierung mit Apache Mesos
Service Orchestrierung mit Apache MesosService Orchestrierung mit Apache Mesos
Service Orchestrierung mit Apache MesosRalf Ernst
 
Good by Server... Hello Client!
Good by Server... Hello Client!Good by Server... Hello Client!
Good by Server... Hello Client!Sandro Sonntag
 
Restful Frontend-Architecture
Restful Frontend-ArchitectureRestful Frontend-Architecture
Restful Frontend-ArchitectureSandro Sonntag
 
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012get on top gmbh
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsStephan Kaps
 
SimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud DatenbankSimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud DatenbankONE Schweiz
 
Webinar SharePoint auf AWS
Webinar SharePoint auf AWSWebinar SharePoint auf AWS
Webinar SharePoint auf AWSAWS Germany
 
OEM Cloud Control - Hochverfügbar von Kopf bis Fuß
OEM Cloud Control - Hochverfügbar von Kopf bis Fuß OEM Cloud Control - Hochverfügbar von Kopf bis Fuß
OEM Cloud Control - Hochverfügbar von Kopf bis Fuß DanielHillinger
 
MongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows AzureMongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows AzureJan Hentschel
 
Ruby on Rails - Eine kurze Einführung
Ruby on Rails - Eine kurze EinführungRuby on Rails - Eine kurze Einführung
Ruby on Rails - Eine kurze EinführungThomas R. Koll
 
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.David Jardin
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcosRalf Ernst
 

Was ist angesagt? (20)

May the forge be with you
May the forge be with youMay the forge be with you
May the forge be with you
 
Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.
 
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenSQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
 
CQRS in der Praxis - Newsletter Double-Opt-In
CQRS in der Praxis - Newsletter Double-Opt-InCQRS in der Praxis - Newsletter Double-Opt-In
CQRS in der Praxis - Newsletter Double-Opt-In
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
Service Orchestrierung mit Apache Mesos
Service Orchestrierung mit Apache MesosService Orchestrierung mit Apache Mesos
Service Orchestrierung mit Apache Mesos
 
Good by Server... Hello Client!
Good by Server... Hello Client!Good by Server... Hello Client!
Good by Server... Hello Client!
 
Restful Frontend-Architecture
Restful Frontend-ArchitectureRestful Frontend-Architecture
Restful Frontend-Architecture
 
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
 
SimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud DatenbankSimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud Datenbank
 
Webinar SharePoint auf AWS
Webinar SharePoint auf AWSWebinar SharePoint auf AWS
Webinar SharePoint auf AWS
 
Query Result Caching
Query Result CachingQuery Result Caching
Query Result Caching
 
OEM Cloud Control - Hochverfügbar von Kopf bis Fuß
OEM Cloud Control - Hochverfügbar von Kopf bis Fuß OEM Cloud Control - Hochverfügbar von Kopf bis Fuß
OEM Cloud Control - Hochverfügbar von Kopf bis Fuß
 
MongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows AzureMongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows Azure
 
Ruby on Rails - Eine kurze Einführung
Ruby on Rails - Eine kurze EinführungRuby on Rails - Eine kurze Einführung
Ruby on Rails - Eine kurze Einführung
 
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcos
 

Andere mochten auch

Matrimonio entre personas del mismo sexo
Matrimonio entre personas del mismo sexoMatrimonio entre personas del mismo sexo
Matrimonio entre personas del mismo sexoMiguel Galindo
 
SharePoint Conference Munich 2014: It's not your father's SharePoint - Biz Ed...
SharePoint Conference Munich 2014: It's not your father's SharePoint - Biz Ed...SharePoint Conference Munich 2014: It's not your father's SharePoint - Biz Ed...
SharePoint Conference Munich 2014: It's not your father's SharePoint - Biz Ed...Adis Jugo
 
The Value and Power of Distributed Energy in Minnesota
The Value and Power of Distributed Energy in MinnesotaThe Value and Power of Distributed Energy in Minnesota
The Value and Power of Distributed Energy in MinnesotaJohn Farrell
 
Document2
Document2Document2
Document2lezzel
 
Presentación Citysens en máster URV
Presentación Citysens en máster URVPresentación Citysens en máster URV
Presentación Citysens en máster URVXavi Rius
 
Osdc09 Apr09 openQRM Workshop
Osdc09 Apr09 openQRM WorkshopOsdc09 Apr09 openQRM Workshop
Osdc09 Apr09 openQRM WorkshopVirttoo org
 
JPEC 2014 Brochure-V28-TO PRINT with corrections Undergrad. Entre. Programs
JPEC 2014 Brochure-V28-TO PRINT with corrections Undergrad. Entre. ProgramsJPEC 2014 Brochure-V28-TO PRINT with corrections Undergrad. Entre. Programs
JPEC 2014 Brochure-V28-TO PRINT with corrections Undergrad. Entre. ProgramsAmy Jo Reimer-Myers
 
Camiseta com gola v, camiseta gola v, r$ 29,90
Camiseta com gola v, camiseta gola v, r$ 29,90  Camiseta com gola v, camiseta gola v, r$ 29,90
Camiseta com gola v, camiseta gola v, r$ 29,90 camisetas rock bandas
 
WingsFund - Truly Angel Investor
WingsFund - Truly Angel InvestorWingsFund - Truly Angel Investor
WingsFund - Truly Angel InvestorM. Dzulfahmi Yahya
 
Obrazac fin izvj
Obrazac fin izvj Obrazac fin izvj
Obrazac fin izvj lezzel
 
Apresentação Eco Franchising Multiply
Apresentação Eco Franchising MultiplyApresentação Eco Franchising Multiply
Apresentação Eco Franchising MultiplyWilliam Cardoso
 
Project Server and SharePoint Server - better together
Project Server and SharePoint Server - better togetherProject Server and SharePoint Server - better together
Project Server and SharePoint Server - better togetherAdis Jugo
 
sistema de información gerencial Analisis FODA
sistema de información gerencial Analisis FODAsistema de información gerencial Analisis FODA
sistema de información gerencial Analisis FODANoemidiazrodriguez
 
Mitarbeiterbindung als Instrument zur Steigerung der Arbeitgeberattraktivität
Mitarbeiterbindung als Instrument zur Steigerung der ArbeitgeberattraktivitätMitarbeiterbindung als Instrument zur Steigerung der Arbeitgeberattraktivität
Mitarbeiterbindung als Instrument zur Steigerung der ArbeitgeberattraktivitätSoftware Saxony / AG Personal
 
Planejando interfaces Web acessíveis
Planejando interfaces Web acessíveisPlanejando interfaces Web acessíveis
Planejando interfaces Web acessíveisSimone Villas Boas
 
受注を2倍にする法人営業のやり方Vol3
受注を2倍にする法人営業のやり方Vol3受注を2倍にする法人営業のやり方Vol3
受注を2倍にする法人営業のやり方Vol3小島 規彰
 

Andere mochten auch (20)

Matrimonio entre personas del mismo sexo
Matrimonio entre personas del mismo sexoMatrimonio entre personas del mismo sexo
Matrimonio entre personas del mismo sexo
 
SharePoint Conference Munich 2014: It's not your father's SharePoint - Biz Ed...
SharePoint Conference Munich 2014: It's not your father's SharePoint - Biz Ed...SharePoint Conference Munich 2014: It's not your father's SharePoint - Biz Ed...
SharePoint Conference Munich 2014: It's not your father's SharePoint - Biz Ed...
 
The Value and Power of Distributed Energy in Minnesota
The Value and Power of Distributed Energy in MinnesotaThe Value and Power of Distributed Energy in Minnesota
The Value and Power of Distributed Energy in Minnesota
 
Document2
Document2Document2
Document2
 
sximatoplanitis
sximatoplanitissximatoplanitis
sximatoplanitis
 
Presentación Citysens en máster URV
Presentación Citysens en máster URVPresentación Citysens en máster URV
Presentación Citysens en máster URV
 
Osdc09 Apr09 openQRM Workshop
Osdc09 Apr09 openQRM WorkshopOsdc09 Apr09 openQRM Workshop
Osdc09 Apr09 openQRM Workshop
 
JPEC 2014 Brochure-V28-TO PRINT with corrections Undergrad. Entre. Programs
JPEC 2014 Brochure-V28-TO PRINT with corrections Undergrad. Entre. ProgramsJPEC 2014 Brochure-V28-TO PRINT with corrections Undergrad. Entre. Programs
JPEC 2014 Brochure-V28-TO PRINT with corrections Undergrad. Entre. Programs
 
Camiseta com gola v, camiseta gola v, r$ 29,90
Camiseta com gola v, camiseta gola v, r$ 29,90  Camiseta com gola v, camiseta gola v, r$ 29,90
Camiseta com gola v, camiseta gola v, r$ 29,90
 
WingsFund - Truly Angel Investor
WingsFund - Truly Angel InvestorWingsFund - Truly Angel Investor
WingsFund - Truly Angel Investor
 
Obrazac fin izvj
Obrazac fin izvj Obrazac fin izvj
Obrazac fin izvj
 
Apresentação Eco Franchising Multiply
Apresentação Eco Franchising MultiplyApresentação Eco Franchising Multiply
Apresentação Eco Franchising Multiply
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
 
Project Server and SharePoint Server - better together
Project Server and SharePoint Server - better togetherProject Server and SharePoint Server - better together
Project Server and SharePoint Server - better together
 
Anexo a4 pensamiento basado en riesgo
Anexo a4 pensamiento basado en riesgo Anexo a4 pensamiento basado en riesgo
Anexo a4 pensamiento basado en riesgo
 
sistema de información gerencial Analisis FODA
sistema de información gerencial Analisis FODAsistema de información gerencial Analisis FODA
sistema de información gerencial Analisis FODA
 
Mitarbeiterbindung als Instrument zur Steigerung der Arbeitgeberattraktivität
Mitarbeiterbindung als Instrument zur Steigerung der ArbeitgeberattraktivitätMitarbeiterbindung als Instrument zur Steigerung der Arbeitgeberattraktivität
Mitarbeiterbindung als Instrument zur Steigerung der Arbeitgeberattraktivität
 
Planejando interfaces Web acessíveis
Planejando interfaces Web acessíveisPlanejando interfaces Web acessíveis
Planejando interfaces Web acessíveis
 
Coach clinic
Coach clinicCoach clinic
Coach clinic
 
受注を2倍にする法人営業のやり方Vol3
受注を2倍にする法人営業のやり方Vol3受注を2倍にする法人営業のやり方Vol3
受注を2倍にする法人営業のやり方Vol3
 

Ähnlich wie Ruby on Rails in a metro session

Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAsQAware GmbH
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft AG
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere RESTMartin Abraham
 
ASP.NET MVC 2 - Eine Einführung
ASP.NET MVC 2 - Eine EinführungASP.NET MVC 2 - Eine Einführung
ASP.NET MVC 2 - Eine EinführungNETUserGroupBern
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On RailsJonathan Weiss
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsUlrich Schmidt
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsHussein Morsy
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsStefan Adolf
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?adesso AG
 
Serverless Application Framework
Serverless Application FrameworkServerless Application Framework
Serverless Application FrameworkBATbern
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDIadesso AG
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...André Krämer
 
Bi testing media_factory_0.10
Bi testing media_factory_0.10Bi testing media_factory_0.10
Bi testing media_factory_0.10inovex GmbH
 

Ähnlich wie Ruby on Rails in a metro session (20)

Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere REST
 
ASP.NET MVC 2 - Eine Einführung
ASP.NET MVC 2 - Eine EinführungASP.NET MVC 2 - Eine Einführung
ASP.NET MVC 2 - Eine Einführung
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On Rails
 
Cloud Computing - PaaS
Cloud Computing - PaaSCloud Computing - PaaS
Cloud Computing - PaaS
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schritt
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
 
Ruby on Rails SS09 11
Ruby on Rails SS09 11Ruby on Rails SS09 11
Ruby on Rails SS09 11
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
 
Serverless Application Framework
Serverless Application FrameworkServerless Application Framework
Serverless Application Framework
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Bi testing media_factory_0.10
Bi testing media_factory_0.10Bi testing media_factory_0.10
Bi testing media_factory_0.10
 

Ruby on Rails in a metro session

  • 1. Ruby on Rails in a metro session... Jesus Villar, jesus at virttoo.org
  • 3. Worum geht's heute? • Was ist Ruby on Rails? • Web Frameworks? • Ruby on Rails Stack • RoR Arbeitsweise • Vorteile / Nachteile
  • 5. Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration. http://rubyonrails.org/
  • 6. Historie • David Heinemeier Hansson für Basecamp Entwicklung in 2003 • 37signals ist Haupt- Sponsor • MIT Lizenz • 1.600 Contributors
  • 7. Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration. http://rubyonrails.org/
  • 9. Webframeworks • Fokussierung auf die Applikation - Produktivität • Geschwindigkeit - "Time to market" • Robustheit • Wiederverwendung • Standards (MVC, Objektrelationales Mapping, etc.)
  • 10. Anforderungen an moderne Webframeworks • Objektorientierung • Templating • AJAX • Sicherheit und Robustheit • Weiterentwicklung und aktive Community
  • 11. Web Frameworks PHP JAVA Python C# Zend Spring Django ASP.net symfony Struts Turbogears CodeIgniter Tapestry Zope Ruby Ruby on Rails
  • 12. Rock n' Roll! http://www.flickr.com/photos/stephenpoff/2920198159/
  • 13. Ruby on Rails Stack • Ruby • Gems • Rails • Active* • DB-Bindings (SQLite, MySQL, Postgres)
  • 14. Paradigmen • Model-View-Controller (MVC) • DRY - Don't repeat yourself • Convention over configuration • REST
  • 15. MVC • Trennung Geschäftslogik von Nutzerschschnittstelle • Vereinfacht Code-Pflege • Inhaltliche Zuordung von Code zu Funktionalität
  • 16. DRY • Don't repeat yourself • Redundanzen vermeiden bzw. reduzieren • Änderungen nur an einer Stelle vornehmen Pragmatic Programmer (Andy Hunts, Dave Thomas)
  • 17. Convention over configuration • Namenskonventionen erleichtern die Anwendung • Beispiel: Model singular, Datenbankname Plural, Controller Plural • Außer der Datenbank Verbindung wird nichts konfiguriert
  • 18. REST • Jeder Ressource ein spezifischer URI zugeordnet • Unterschiedliche Repräsentationen möglich (HTML oder XML) • Zustandsloses Client/Server-Protokoll (HTTP) • CRUD via PUT, GET, POST, DELETE HTTP Methoden
  • 19. RoR flow chart Routing WebServer Controller Model(s) View Database
  • 20. Model • Hier werden Validierungen vorgenommen (validates_presence_of :name) • Durch Ableitung von ActiveRecord werden automatisch getter/setter für Attribute erzeugt • Konvention: Tabellennamen immer Plural vom Modellnamen • Relationen textuell beschrieben: • 1:1 has_one / belongs_to • 1:n has_many / belongs_to • n:m has_and_belongs_to_many / has_and_belongs_to_many
  • 21. Controller • Controller steuern Ablauf (Routing anpassbar) • Controller verwalten Modell • Jede Methode im Controller entspricht einer ausführbaren Action • View erhält Daten (für Vorbelegungen) über Instanzvariablen • Views werden über Konvention vom Controller angesprochen bzw. erzeugt • Verhalten der Controller kann mit Hilfe von Filtern beeinflusst werden (z.B. für Autorisierung, Authentifizierung)
  • 22. View • Embedded Ruby (ERB) als Templating- Mechanismus • Datenzugriff über Instanzvariablen des Controllers • Inkludierung von Seitenteilen möglich (Partials) • Seitenweises blättern (Pagination) • Ajax • Scriptaculous u. Prototype sind in Rails per Default integriert • RJS (Rails Javascript) kapselt komplexe Funktionen
  • 23. Scaffolding • Schnelle Ergebnisse • "Quick and dirty" > rails generate scaffold Post name:string title:string content:text > rake db:migrate
  • 25. Vorteile / Nachteile • Sehr schnelle Ergebnisse v.a bei • Völlige Abhängigkeit vom Framework CRUD Applikationen • Je spezieller die Applikation, je • nimmt Entwicklern Routinearbeiten weniger Vorteile ab • Performance & Skalierbarkeit • Automatische Verwendung von Best Practices • Teilweise erheblicher Erstaufwand • Organisierte Struktur der Anwendung • Aktuell nicht sehr weit verbreitet (Hosting) • Code läuft auf verschiedenen Plattformen mit minimalen • Deployment ist kompliziert Anpassungen • Wartung der Software wird durch MVC, DRY, OOP einfach
  • 26. Warum Ruby on Rails? • Produktivitätskurve - Stunden, nicht Wochen • Schnelle Ergebnisse und Kommunikation • Eingebaute Datenbankpersistenz • AJAX Integration
  • 27. Warum kein RoR? • Nicht compiliert • DNA ist webframework, und z.B. kein EAI • Richtig große Skalierung ist aufwendig
  • 31. Environments /Umgebungen • Applikationsname_development Entwicklung • Applikationsname_test Testumgebung • Applikationsname_production Produktion
  • 32. Convention over configuration • Datenbanktabelle: libraries • Model: Library • Controller-Klassenname: LibrariesController • Controller-Dateiname: libraries_controller.rb • Controller Action: http://example.com/libraries/index • Test: LibraryTest • Test-Dateiname: LibraryTest • DB-Fixture: libraries.yml
  • 33. Komponenten • Action Pack • Action Controller • Action Dispatch • Action View • Active Record • Action Mailer • ...
  • 34. Applikation erstellen rails new demoapp ... Gemfile, README, Rakefile, app, config, config.ru, db, doc, lib, log, public, script, test, tmp, vendor
  • 35. Einen Controller erstellen rails generate controller Greeting create app/controllers/greeting_controller.rb invoke erb create app/views/greeting invoke test_unit create test/functional/greeting_controller_test.rb invoke helper create app/helpers/greeting_helper.rb invoke test_unit create test/unit/helpers/greeting_helper_test.rb
  • 37. Server starten #demoapp: rails server http://localhost:3000
  • 38. ActiveRecord • Repräsentation des Schemas in Datenbank unabhängig • Änderungen am Schema via Migrationen (versioniert) • Rails kann mit Hilfe der Version automatisch Up-/ Down-Migrationen der Datenbank vornehmen • Drei Datenbanken: Entwicklung, Test, Produktion
  • 40. RoR vs. the Rest
  • 41. Quellen • http://www.rubyonrails.org/ • http://www.rubyonrails.de/ • http://www.slideshare.net/foobar2605/ einfhrung-in-ruby-on-rails • http://www.slideshare.net/raindoll/ruby-on- rails-einfhrung
  • 42. Abstract • In den vergangenen Jahren hat sich ein neues Framework zur Entwicklung von Web- Anwendungen in den Vordergrund gebracht. Im Rahmen des Vortrags werden die Entwicklungsgeschichte, die Philosophie und die Möglichkeiten von RoR vorgestellt. • Was unterscheidet RoR von anderen Frameworks, was macht es erfolgreich, wo hat es seine Einschränkungen und warum polarisiert es die Entwicklergemeinde?