SlideShare uma empresa Scribd logo
1 de 13
Úvod do Ruby on Rails

       © UNICORN COLLEGE 2007
Friday, March 5, 2010
1. Základní filozofie Rails!
           Méně kódu, krátký vývojový cyklus
           Convention over configuration
                  Skoro žádné konfigurační soubory
                  Předem definovaná adresářová struktura
                  Konvence pro pojmenování souborů
           Důležité zkratky:
                  MVC (Model - View - Controller)
                  ORM (Object-Relational Mapping)
                  DRY (Don’t Repeat Yourself)
           Podpora pro AJAX a web services (REST, SOAP)
           Vývojové nástroje, dokumentace, komunita



       © UNICORN COLLEGE 2007
Friday, March 5, 2010
2. Ruby on Rails: Komponenty a request-response cyklus
                                                             Prohlížeč odešle požadavek na URL:
                               Prohlížeč                     http://localhost:3000/users/show/1
              HTTP Požadavek (URL)                           Rails server na portu 3000 přijme
                                                             požadavek a předá URL na Router.
                                       HTTP Odpověď (HTML)
                                                             Jedná o požadavek na kontroler User,
                                                             provést akci show, záznam id = 1
                    Router
                                                             Vytvoří se nová instance kontroleru
                                                             UserController a zavolá se metoda
                               Ruby on Rails                 show s parametrem id = 1. Tato
                                                             metoda se dotáže na data zákazníka
                                               View          č.1 modelu User.
                    Kontroler                  (pohled)      Model User odešle SQL dotaz do
                                                             databáze a po obdržení výsledku předá
                                                             data zpět kontroleru.
                    Modely Active Record
                                                             Kontroler uloží data do proměnné
                        User      Airplane     Ticket        @user a předá řízení pohledu.
                                                             V pohledu se do HTML šablony doplní
                                                             data z této proměnné a výsledná
                                                             stránka se odešle nazpět prohlížeči.
                               Databáze                      Prohlížeč zobrazí přijaté HTML
Friday, March 5, 2010
3. Adresářová struktura
           app
                  controllers
                        user_controller.rb
                  models
                        user.rb
                  views
                        layouts
                           main.html.erb
                        user
                           show.html.erb

           config
                  routes.rb
           db
                  database.yml
                  migrations
           public
                  index.html
       © UNICORN COLLEGE 2007
Friday, March 5, 2010
4. Controller a View: Interakce a prezentace
      1. Vytvořte novou Rails aplikaci pomocí IDE, nebo pomocí příkazu rails demo
      2. Založte nový soubor app/controllers/say_controller.rb
     class SayController < ApplicationController
       def hello
         @message = "Hello World!"
       end
     end

      3. Založte nový soubor app/views/say/hello.html.erb
     <html>
     <head>
       <title>Rails demo program</title>
     </head>
     <body>
       <h1><%= @message %></h1>
     </body>
     </html>

     4. Spusťte aplikaci v IDE nebo pomocí příkazu script/server




       © UNICORN COLLEGE 2007
Friday, March 5, 2010
5. Model: ActiveRecord a přístup k databázi
           ORM = Objektově-Relační Mapování
                  Objektové rozhraní pro relační databázi
                  Jednodušší a pohodlnější než SQL
           Co se vlastně “mapuje”?
                  Každá tabulka v databázi odpovídá jedné ruby třídě
                  Každý řádek v tabulce odpovídá jednomu ruby objektu
                  Každý sloupec odpovídá jednomu atributu
           Konvence pro tvorbu tabulek
                  Jména tabulek jsou v plurálu, např. users
                  Jména ruby tříd jsou v singuláru, např. User
                  Všechny tabulky mají číselný primární klíč nazvaný id
                  Třídy modelů jsou uloženy v adresáři app/models
                  Databázové tabulky se vytvářejí pomocí migrací

       © UNICORN COLLEGE 2007
Friday, March 5, 2010
6. Migrace
           Nástroj pro tvorbu a údržbu schématu databáze
                  Popis databázových tabulek pomocí ruby příkazů
                        Vytvoř novou tabulku
                        Smaž tabulky
                        Přidej sloupec určitého datového typu
                        Odeber sloupec
                  Každá migrace je samostatná třída
                        Obsahuje metodu “up” pro vytvoření nových tabulek
                        A metodu “down” pro jejich smazání
                        Definuje novou verzi schématu
                  Jak pracovat s migracemi?
                        rake db:migrate (migrovat na nejnovější verzi)
                        rake db:migrate VERSION=X (migrovat na verzi X)
                        rake db:version (zjistit současnou verzi)



       © UNICORN COLLEGE 2007
Friday, March 5, 2010
7. Migrace: příklad
      class CreateUsers < ActiveRecord::Migration
        def self.up
          create_table :users do |t|
            t.string :first_name
            t.string :last_name
            t.date :date_of_birth
            t.integer :zipcode
          end
        end

        def self.down
          drop_table :users
        end
      end




       © UNICORN COLLEGE 2007
Friday, March 5, 2010
8. Základní práce s daty
           CRUD (Create, Read, Update, Delete)
                  4 základní databázové operace
                        Vytváření, Čtení, Úpravy, Mazání

           4 Příkazy pro ActiveRecord
                  Vytváření nových záznamů (create)
                        new
                  Čtení, hledání záznamů (read)
                        find
                  Úpravy záznamů (update)
                        save
                  Mazání záznamů (delete)
                        destroy




       © UNICORN COLLEGE 2007
Friday, March 5, 2010
9. ActiveRecord - Vytváření záznamů
        user = User.new
        user.first_name = "Yukihiro"
        user.last_name = "Matsumoto"
        user.date_of_birth = Date.parse('14.4.1965')
        user.save


        user = User.new(                       user = User.create(
          :first_name => "David",                :first_name => "Zed",
          :last_name => "Hanson"                 :last_name => "Shaw"
        )                                      )
        user.save


        user = User.new(                       user = User.new(
          :first_name => "Rick",                 :first_name => "Obie",
          :last_name => "Olson"                  :last_name => "Fernandez"
        )                                      )

        if user.save                           if user.save!
          # All is ok                            # All is ok
        else                                   rescue RecordInvalid
          # Couldn't save user                   # Couldn't save
        end                                    end

       © UNICORN COLLEGE 2007
Friday, March 5, 2010
10. Vyhledávání, editace a mazání
       Vyhledávání - podle id, podle atributu, jeden záznam, pole
      user = User.find(1)                     user = User.find_by_first_name("Zed")
      puts user.first_name # Yukihiro         puts user.last_name # Shaw


      users = User.all                        users = User.find_all_by_age(33)
      puts users.length # 3                   puts users.count # 2


                                                Text
       Editace - po jednotlivých atributech, nebo s použitím slovníku
      user = User.find(1)                      user = User.find(1)
      user.update_attributes(                  user.first_name = "Koichi"
        :first_name => "Koichi",               user.last_name = "Sasada"
        :last_name => "Sasada"                 user.save
      )



       Mazání - pro více záznamů je nutné iterovat
      user = User.find(1)                     users = User.all
      user.destroy                            users.each{|u| u.destroy}


       © UNICORN COLLEGE 2007
Friday, March 5, 2010
11. Formuláře a PARAMS
                                                                       user_form.html.erb
      <% form_for :user,        :url => { :action => "create" } do |f| %>
         First name: <%=        f.text_field :first_name %> <br/>
         Last name: <%=         f.text_field :last_name %> <br/>
         Biography: <%=         f.text_area :biography %>   <br/>
         Admin?      <%=        f.check_box :admin %>       <br/>
      <% end %>



                                                                            user_controller.rb
          def create                                 Text
            @user = User.new
            @user.update_attributes(params[:user])
            if @user.save
              redirect_to :action => 'index'
            else
              redirect_to :action => 'user_form'
            end
          end

          def user_form
            # Do nothing - renders user_form.html.erb
          end


       © UNICORN COLLEGE 2007
Friday, March 5, 2010
Děkuji za pozornost
       © UNICORN COLLEGE 2007
Friday, March 5, 2010

Mais conteúdo relacionado

Semelhante a Úvod do rails

Představení Ruby on Rails
Představení Ruby on RailsPředstavení Ruby on Rails
Představení Ruby on Railsigloonet
 
Rozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVCRozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVCtopascz
 
Rozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVCRozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVCtopascz
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariRoman Pichlík
 
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!Martin Humpolec
 
INPTP Rekapitulace
INPTP Rekapitulace INPTP Rekapitulace
INPTP Rekapitulace Jan Hřídel
 
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise AplikacíMartin Ptáček
 
Czech Sun Training Day 2008 - Java Enterprise System
Czech Sun Training Day 2008 - Java Enterprise SystemCzech Sun Training Day 2008 - Java Enterprise System
Czech Sun Training Day 2008 - Java Enterprise SystemMartin Cerveny
 
Představení Ruby on Rails [Junior Internet]
Představení Ruby on Rails [Junior Internet]Představení Ruby on Rails [Junior Internet]
Představení Ruby on Rails [Junior Internet]Karel Minarik
 
Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013Tomáš Kypta
 
2010 JBoss Application Server
2010 JBoss Application Server2010 JBoss Application Server
2010 JBoss Application ServerMartin Ptáček
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEEMartin Ptáček
 
CRCE - přehled datového modelu a vybraná API
CRCE - přehled datového modelu a vybraná APICRCE - přehled datového modelu a vybraná API
CRCE - přehled datového modelu a vybraná APIPremek Brada
 

Semelhante a Úvod do rails (20)

Představení Ruby on Rails
Představení Ruby on RailsPředstavení Ruby on Rails
Představení Ruby on Rails
 
Rozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVCRozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVC
 
Rozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVCRozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVC
 
R85 Designer Tcl
R85 Designer TclR85 Designer Tcl
R85 Designer Tcl
 
R85 Designer
R85 DesignerR85 Designer
R85 Designer
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
 
Lotus Notes 7
Lotus Notes 7Lotus Notes 7
Lotus Notes 7
 
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!
 
INPTP Rekapitulace
INPTP Rekapitulace INPTP Rekapitulace
INPTP Rekapitulace
 
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
 
Czech Sun Training Day 2008 - Java Enterprise System
Czech Sun Training Day 2008 - Java Enterprise SystemCzech Sun Training Day 2008 - Java Enterprise System
Czech Sun Training Day 2008 - Java Enterprise System
 
TNPW2-2011-06
TNPW2-2011-06TNPW2-2011-06
TNPW2-2011-06
 
Představení Ruby on Rails [Junior Internet]
Představení Ruby on Rails [Junior Internet]Představení Ruby on Rails [Junior Internet]
Představení Ruby on Rails [Junior Internet]
 
TNPW2-2011-03
TNPW2-2011-03TNPW2-2011-03
TNPW2-2011-03
 
Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013
 
2010 JBoss Application Server
2010 JBoss Application Server2010 JBoss Application Server
2010 JBoss Application Server
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE
 
CRCE - přehled datového modelu a vybraná API
CRCE - přehled datového modelu a vybraná APICRCE - přehled datového modelu a vybraná API
CRCE - přehled datového modelu a vybraná API
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 

Úvod do rails

  • 1. Úvod do Ruby on Rails © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 2. 1. Základní filozofie Rails! Méně kódu, krátký vývojový cyklus Convention over configuration Skoro žádné konfigurační soubory Předem definovaná adresářová struktura Konvence pro pojmenování souborů Důležité zkratky: MVC (Model - View - Controller) ORM (Object-Relational Mapping) DRY (Don’t Repeat Yourself) Podpora pro AJAX a web services (REST, SOAP) Vývojové nástroje, dokumentace, komunita © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 3. 2. Ruby on Rails: Komponenty a request-response cyklus Prohlížeč odešle požadavek na URL: Prohlížeč http://localhost:3000/users/show/1 HTTP Požadavek (URL) Rails server na portu 3000 přijme požadavek a předá URL na Router. HTTP Odpověď (HTML) Jedná o požadavek na kontroler User, provést akci show, záznam id = 1 Router Vytvoří se nová instance kontroleru UserController a zavolá se metoda Ruby on Rails show s parametrem id = 1. Tato metoda se dotáže na data zákazníka View č.1 modelu User. Kontroler (pohled) Model User odešle SQL dotaz do databáze a po obdržení výsledku předá data zpět kontroleru. Modely Active Record Kontroler uloží data do proměnné User Airplane Ticket @user a předá řízení pohledu. V pohledu se do HTML šablony doplní data z této proměnné a výsledná stránka se odešle nazpět prohlížeči. Databáze Prohlížeč zobrazí přijaté HTML Friday, March 5, 2010
  • 4. 3. Adresářová struktura app controllers user_controller.rb models user.rb views layouts main.html.erb user show.html.erb config routes.rb db database.yml migrations public index.html © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 5. 4. Controller a View: Interakce a prezentace 1. Vytvořte novou Rails aplikaci pomocí IDE, nebo pomocí příkazu rails demo 2. Založte nový soubor app/controllers/say_controller.rb class SayController < ApplicationController def hello @message = "Hello World!" end end 3. Založte nový soubor app/views/say/hello.html.erb <html> <head> <title>Rails demo program</title> </head> <body> <h1><%= @message %></h1> </body> </html> 4. Spusťte aplikaci v IDE nebo pomocí příkazu script/server © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 6. 5. Model: ActiveRecord a přístup k databázi ORM = Objektově-Relační Mapování Objektové rozhraní pro relační databázi Jednodušší a pohodlnější než SQL Co se vlastně “mapuje”? Každá tabulka v databázi odpovídá jedné ruby třídě Každý řádek v tabulce odpovídá jednomu ruby objektu Každý sloupec odpovídá jednomu atributu Konvence pro tvorbu tabulek Jména tabulek jsou v plurálu, např. users Jména ruby tříd jsou v singuláru, např. User Všechny tabulky mají číselný primární klíč nazvaný id Třídy modelů jsou uloženy v adresáři app/models Databázové tabulky se vytvářejí pomocí migrací © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 7. 6. Migrace Nástroj pro tvorbu a údržbu schématu databáze Popis databázových tabulek pomocí ruby příkazů Vytvoř novou tabulku Smaž tabulky Přidej sloupec určitého datového typu Odeber sloupec Každá migrace je samostatná třída Obsahuje metodu “up” pro vytvoření nových tabulek A metodu “down” pro jejich smazání Definuje novou verzi schématu Jak pracovat s migracemi? rake db:migrate (migrovat na nejnovější verzi) rake db:migrate VERSION=X (migrovat na verzi X) rake db:version (zjistit současnou verzi) © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 8. 7. Migrace: příklad class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.string :first_name t.string :last_name t.date :date_of_birth t.integer :zipcode end end def self.down drop_table :users end end © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 9. 8. Základní práce s daty CRUD (Create, Read, Update, Delete) 4 základní databázové operace Vytváření, Čtení, Úpravy, Mazání 4 Příkazy pro ActiveRecord Vytváření nových záznamů (create) new Čtení, hledání záznamů (read) find Úpravy záznamů (update) save Mazání záznamů (delete) destroy © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 10. 9. ActiveRecord - Vytváření záznamů user = User.new user.first_name = "Yukihiro" user.last_name = "Matsumoto" user.date_of_birth = Date.parse('14.4.1965') user.save user = User.new( user = User.create( :first_name => "David", :first_name => "Zed", :last_name => "Hanson" :last_name => "Shaw" ) ) user.save user = User.new( user = User.new( :first_name => "Rick", :first_name => "Obie", :last_name => "Olson" :last_name => "Fernandez" ) ) if user.save if user.save! # All is ok # All is ok else rescue RecordInvalid # Couldn't save user # Couldn't save end end © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 11. 10. Vyhledávání, editace a mazání Vyhledávání - podle id, podle atributu, jeden záznam, pole user = User.find(1) user = User.find_by_first_name("Zed") puts user.first_name # Yukihiro puts user.last_name # Shaw users = User.all users = User.find_all_by_age(33) puts users.length # 3 puts users.count # 2 Text Editace - po jednotlivých atributech, nebo s použitím slovníku user = User.find(1) user = User.find(1) user.update_attributes( user.first_name = "Koichi" :first_name => "Koichi", user.last_name = "Sasada" :last_name => "Sasada" user.save ) Mazání - pro více záznamů je nutné iterovat user = User.find(1) users = User.all user.destroy users.each{|u| u.destroy} © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 12. 11. Formuláře a PARAMS user_form.html.erb <% form_for :user, :url => { :action => "create" } do |f| %> First name: <%= f.text_field :first_name %> <br/> Last name: <%= f.text_field :last_name %> <br/> Biography: <%= f.text_area :biography %> <br/> Admin? <%= f.check_box :admin %> <br/> <% end %> user_controller.rb def create Text @user = User.new @user.update_attributes(params[:user]) if @user.save redirect_to :action => 'index' else redirect_to :action => 'user_form' end end def user_form # Do nothing - renders user_form.html.erb end © UNICORN COLLEGE 2007 Friday, March 5, 2010
  • 13. Děkuji za pozornost © UNICORN COLLEGE 2007 Friday, March 5, 2010