SlideShare a Scribd company logo
1 of 47
Download to read offline
Sinatra
                                       Primeiros passos


                                                     por Jésus Lopes
   #zigottolabs                                        @jtadeulopes

sexta-feira, 11 de fevereiro de 2011
#zigottolabs
sexta-feira, 11 de fevereiro de 2011
ruby




sexta-feira, 11 de fevereiro de 2011
web

                                       ruby




sexta-feira, 11 de fevereiro de 2011
framework
                     web

                                       ruby




sexta-feira, 11 de fevereiro de 2011
framework
                     web

                                       ruby

           development


sexta-feira, 11 de fevereiro de 2011
framework
                     web

                                       ruby
                                              applications
           development


sexta-feira, 11 de fevereiro de 2011
framework
                     web

                                       ruby
                                              applications
           development

                                         open-source
sexta-feira, 11 de fevereiro de 2011
e o Rails?



sexta-feira, 11 de fevereiro de 2011
Ele é o mais utilizado,
        mas não é o único!




sexta-feira, 11 de fevereiro de 2011
Sinatra

                      “Sinatra is a DSL for quickly creating
                  web applications in Ruby with minimal effort”




                                             https://github.com/sinatra/sinatra
sexta-feira, 11 de fevereiro de 2011
O que eu preciso?




sexta-feira, 11 de fevereiro de 2011
O que eu preciso?


                                       $ gem install sinatra




sexta-feira, 11 de fevereiro de 2011
O que eu preciso?


                                       $ gem install sinatra


                                              pronto =)



sexta-feira, 11 de fevereiro de 2011
Primeiro exemplo




sexta-feira, 11 de fevereiro de 2011
Primeiro exemplo




sexta-feira, 11 de fevereiro de 2011
Primeiro exemplo

                                       Mínimo de
                                       esforço, ok?




sexta-feira, 11 de fevereiro de 2011
1       # my_app.rb
                           2       require "rubygems"
                           3       require "sinatra"
                           4
                           5
                           6       get "/" do
                           7         "#zigottolabs"
                           8       end



sexta-feira, 11 de fevereiro de 2011
$ ruby my_app.rb




sexta-feira, 11 de fevereiro de 2011
$ ruby my_app.rb




sexta-feira, 11 de fevereiro de 2011
Routes
                                       http://sinatra-book.gittr.com/#routes




sexta-feira, 11 de fevereiro de 2011
1      # simple routes
                  2
                  3      get "/contact" do
                  4        "http://www.zigotto.com"
                  5      end
                  6
                  7      # named parameters
                  8
                  9      get "/url/:username" do
                 10        # GET /url/jtadeulopes
                 11        params[:username] # => "jtadeulopes"
                 12      end




sexta-feira, 11 de fevereiro de 2011
HTTP Methods
                                       http://sinatra-book.gittr.com/#http_methods




sexta-feira, 11 de fevereiro de 2011
1   get "/" do
                                        2     "show..."
                                        3   end
                                        4
                                        5   post "/" do
                                        6     "create something..."
                                        7   end
                                        8
                                        9   put "/" do
                                       10     "update something..."
                                       11   end
                                       12
                                       13   delete "/" do
                                       14     "delete..."
                                       15   end




sexta-feira, 11 de fevereiro de 2011
Views
                                       http://sinatra-book.gittr.com/#views




sexta-feira, 11 de fevereiro de 2011
1 get "/" do
              2   '<html>
              3     <head>
              4       <title>Sinatra</title>
              5     </head>
              6     <body>
              7       <p>Primeiros passos com sinatra</p>
              8     </body>
              9   </html>'
             10 end




sexta-feira, 11 de fevereiro de 2011
Mínimo esforço?




sexta-feira, 11 de fevereiro de 2011
1 # erb
           2 get "/" do
           3   erb :index
           4 end




sexta-feira, 11 de fevereiro de 2011
1 # erb
           2 get "/" do
           3   erb :index
           4 end




sexta-feira, 11 de fevereiro de 2011
1 # erb
           2 get "/" do
           3   erb :index
           4 end



          1 <!-- /views/index.erb -->
          2 <html>
          3   <head>
          4     <title>Sinatra</title>
          5   </head>
          6   <body>
          7     <p>Primeiros passos com sinatra</p>
          8   </body>
          9 </html>




sexta-feira, 11 de fevereiro de 2011
1 # erb
           2 get "/" do
           3   erb :index
           4 end



          1 <!-- /views/index.erb -->
          2 <html>
          3   <head>
          4     <title>Sinatra</title>
          5   </head>
          6   <body>
          7     <p>Primeiros passos com sinatra</p>
          8   </body>
          9 </html>




sexta-feira, 11 de fevereiro de 2011
1    # haml
                       2    # render /views/index.haml
                       3
                       4    get "/" do
                       5      haml :index
                       6    end
                       7
                       8    # sass
                       9    # render /views/stylesheet.sass
                      10
                      11    get "/stylesheet.css" do
                      12      content_type "text/css", :charset => "utf-8"
                      13      sass :stylesheet
                      14    end




sexta-feira, 11 de fevereiro de 2011
Helpers
                                       http://sinatra-book.gittr.com/#helpers




sexta-feira, 11 de fevereiro de 2011
1      helpers do
                    2
                    3            def profile_url(username)
                    4              "http://twitter.com/#{username}"
                    5            end
                    6
                    7      end
                    8
                    9      get "/url/:username" do
                   10        # GET /url/jtadeulopes
                   11        profile_url(params[:username])
                   12      end




sexta-feira, 11 de fevereiro de 2011
Filters
                                       http://sinatra-book.gittr.com/#filters




sexta-feira, 11 de fevereiro de 2011
1     before do
            2       "this code will run before each request..."
            3     end
            4
            5     get "/" do
            6       "...."
            7     end
            8
            9     after do
           10       "this code will run after each request..."
           11     end




sexta-feira, 11 de fevereiro de 2011
Configuration
                                       http://sinatra-book.gittr.com/#configuration




sexta-feira, 11 de fevereiro de 2011
1    # all environments
                                  2    configure do
                                  3      "..."
                                  4    end
                                  5
                                  6    # production
                                  7    configure :production do
                                  8      set :domain, "http://www.site.com"
                                  9      not_found do
                                 10        erb :"404"
                                 11      end
                                 12      error do
                                 13        erb :"500"
                                 14      end
                                 15    end
                                 16
                                 17    # multiple
                                 18    configure :development, :test do
                                 19      set :domain, "http://localhost:4567"
                                 20    end
                                 21
                                 22    # GET /
                                 23    get "/" do
                                 24      "my domain is #{options.domain}"
                                 25    end



sexta-feira, 11 de fevereiro de 2011
Models
                                       http://sinatra-book.gittr.com/#models




sexta-feira, 11 de fevereiro de 2011
ActiveRecord


                                       $ gem install activerecord




sexta-feira, 11 de fevereiro de 2011
1    # my_app.rb
                2    require "rubygems"
                3    require "sinatra"
                4    require "active_record"
                5
                6    # connection settings
                7    ActiveRecord::Base.establish_connection(
                8      :adapter => 'mysql2',
                9      :host => "localhost",
               10      :username => "my_user",
               11      :password => "my_password",
               12      :database => "app_development"
               13    )
               14
               15    # you already have a 'vehicles' table in your database
               16    class Vehicle < ActiveRecord::Base
               17    end
               18
               19    get "/" do
               20      @vehicles = Vehicle.all
               21      erb :index
               22    end



sexta-feira, 11 de fevereiro de 2011
Testing
                                       http://www.sinatrarb.com/testing.html




sexta-feira, 11 de fevereiro de 2011
Test::Unit
     1    # my_app_test.rb
     2    require './my_app'                                    $ gem install rack-test
     3    require 'test/unit'
     4    require 'rack/test'
     5
     6    class MyAppTest < Test::Unit::TestCase
     7      include Rack::Test::Methods
     8
     9       def app
    10         Sinatra::Application
    11       end
    12
    13       def test_my_contact
    14         get '/contact'
    15         assert_equal 'http://www.zigotto.com', last_response.body
    16       end
    17
    18       def test_with_params
    19         get '/url/jtadeulopes'
    20         assert_equal 'http://twitter.com/jtadeulopes', last_response.body
    21       end
    22
    23    end




sexta-feira, 11 de fevereiro de 2011
1
           2
                # my_app_spec.rb
                require './my_app'                                            Rspec
           3    require 'rack/test'
                                                                      $ gem install rspec
           4    require 'rspec'
           5
           6    set :environment, :test
           7
           8    describe 'MyApp' do
           9      include Rack::Test::Methods
          10
          11       def app
          12         Sinatra::Application
          13       end
          14
          15       it "should return url of contact" do
          16         get '/contact'
          17         last_response.should be_ok
          18         last_response.body.should == "http://www.zigotto.com"
          19       end
          20
          21       it "should return twitter url" do
          22         get "/url/jtadeulopes"
          23         last_response.should be_ok
          24         last_response.body.should == "http://twitter.com/jtadeulopes"
          25       end
          26
          27    end



sexta-feira, 11 de fevereiro de 2011
Live coding!

sexta-feira, 11 de fevereiro de 2011
Obrigado!

sexta-feira, 11 de fevereiro de 2011
Links
               •     http://www.sinatrarb.com

               •     https://github.com/sinatra/sinatra

               •     http://adam.blog.heroku.com/

               •     http://sinatra-book.gittr.com

               •     http://www.sinatrarb.com

               •     http://www.slideshare.net/cpjolicoeur/sinatra-ruby-framework-presentation

               •     http://railsforkids.com/




sexta-feira, 11 de fevereiro de 2011

More Related Content

Viewers also liked

#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - MethodologiesIsmar Silveira
 
E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11Ismar Silveira
 
Charla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinalCharla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinalIsmar Silveira
 
Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2Ismar Silveira
 
Paradigmas de Linguagens de Programacao- Aula #8
Paradigmas de Linguagens de Programacao- Aula #8Paradigmas de Linguagens de Programacao- Aula #8
Paradigmas de Linguagens de Programacao- Aula #8Ismar Silveira
 
Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Ismar Silveira
 
Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16Ismar Silveira
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Ismar Silveira
 
Engenharia de Software - Aula1
Engenharia de Software - Aula1Engenharia de Software - Aula1
Engenharia de Software - Aula1Ismar Silveira
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 

Viewers also liked (14)

#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies
 
Fundcompsis 1.1
Fundcompsis 1.1Fundcompsis 1.1
Fundcompsis 1.1
 
E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11
 
Paradigmas do Ruby
Paradigmas do RubyParadigmas do Ruby
Paradigmas do Ruby
 
Charla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinalCharla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinal
 
Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13
 
Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2
 
Paradigmas de Linguagens de Programacao- Aula #8
Paradigmas de Linguagens de Programacao- Aula #8Paradigmas de Linguagens de Programacao- Aula #8
Paradigmas de Linguagens de Programacao- Aula #8
 
Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9
 
E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9
 
Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10
 
Engenharia de Software - Aula1
Engenharia de Software - Aula1Engenharia de Software - Aula1
Engenharia de Software - Aula1
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 

More from Zigotto Tecnologia

Usando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptUsando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptZigotto Tecnologia
 
Nova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis AplicaçõesNova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis AplicaçõesZigotto Tecnologia
 
Apps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGapApps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGapZigotto Tecnologia
 
Testes de aceitação com Steak e Capybara
Testes de aceitação com Steak e CapybaraTestes de aceitação com Steak e Capybara
Testes de aceitação com Steak e CapybaraZigotto Tecnologia
 
Ilustrações, técnicas e formas
Ilustrações, técnicas e formasIlustrações, técnicas e formas
Ilustrações, técnicas e formasZigotto Tecnologia
 
JAVASCRIPT NÃO-OBSTRUTIVO com jQuery
JAVASCRIPT NÃO-OBSTRUTIVO com jQueryJAVASCRIPT NÃO-OBSTRUTIVO com jQuery
JAVASCRIPT NÃO-OBSTRUTIVO com jQueryZigotto Tecnologia
 
Desvendando a Web - Ponto de vista de um Zigottiano
Desvendando a Web - Ponto de vista de um ZigottianoDesvendando a Web - Ponto de vista de um Zigottiano
Desvendando a Web - Ponto de vista de um ZigottianoZigotto Tecnologia
 

More from Zigotto Tecnologia (14)

Engine on Rails
Engine on RailsEngine on Rails
Engine on Rails
 
Apresentação Padawan
Apresentação PadawanApresentação Padawan
Apresentação Padawan
 
Open Source - DevInVale 2011
Open Source - DevInVale 2011Open Source - DevInVale 2011
Open Source - DevInVale 2011
 
Escrevendo plugins JQuery
Escrevendo plugins JQueryEscrevendo plugins JQuery
Escrevendo plugins JQuery
 
Rack Middleware
Rack MiddlewareRack Middleware
Rack Middleware
 
HTML5
HTML5HTML5
HTML5
 
Usando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptUsando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScript
 
Nova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis AplicaçõesNova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis Aplicações
 
Apps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGapApps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGap
 
Um pouco de Agile
Um pouco de AgileUm pouco de Agile
Um pouco de Agile
 
Testes de aceitação com Steak e Capybara
Testes de aceitação com Steak e CapybaraTestes de aceitação com Steak e Capybara
Testes de aceitação com Steak e Capybara
 
Ilustrações, técnicas e formas
Ilustrações, técnicas e formasIlustrações, técnicas e formas
Ilustrações, técnicas e formas
 
JAVASCRIPT NÃO-OBSTRUTIVO com jQuery
JAVASCRIPT NÃO-OBSTRUTIVO com jQueryJAVASCRIPT NÃO-OBSTRUTIVO com jQuery
JAVASCRIPT NÃO-OBSTRUTIVO com jQuery
 
Desvendando a Web - Ponto de vista de um Zigottiano
Desvendando a Web - Ponto de vista de um ZigottianoDesvendando a Web - Ponto de vista de um Zigottiano
Desvendando a Web - Ponto de vista de um Zigottiano
 

Sinatra - Primeiros Passos

  • 1. Sinatra Primeiros passos por Jésus Lopes #zigottolabs @jtadeulopes sexta-feira, 11 de fevereiro de 2011
  • 3. ruby sexta-feira, 11 de fevereiro de 2011
  • 4. web ruby sexta-feira, 11 de fevereiro de 2011
  • 5. framework web ruby sexta-feira, 11 de fevereiro de 2011
  • 6. framework web ruby development sexta-feira, 11 de fevereiro de 2011
  • 7. framework web ruby applications development sexta-feira, 11 de fevereiro de 2011
  • 8. framework web ruby applications development open-source sexta-feira, 11 de fevereiro de 2011
  • 9. e o Rails? sexta-feira, 11 de fevereiro de 2011
  • 10. Ele é o mais utilizado, mas não é o único! sexta-feira, 11 de fevereiro de 2011
  • 11. Sinatra “Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort” https://github.com/sinatra/sinatra sexta-feira, 11 de fevereiro de 2011
  • 12. O que eu preciso? sexta-feira, 11 de fevereiro de 2011
  • 13. O que eu preciso? $ gem install sinatra sexta-feira, 11 de fevereiro de 2011
  • 14. O que eu preciso? $ gem install sinatra pronto =) sexta-feira, 11 de fevereiro de 2011
  • 15. Primeiro exemplo sexta-feira, 11 de fevereiro de 2011
  • 16. Primeiro exemplo sexta-feira, 11 de fevereiro de 2011
  • 17. Primeiro exemplo Mínimo de esforço, ok? sexta-feira, 11 de fevereiro de 2011
  • 18. 1 # my_app.rb 2 require "rubygems" 3 require "sinatra" 4 5 6 get "/" do 7 "#zigottolabs" 8 end sexta-feira, 11 de fevereiro de 2011
  • 19. $ ruby my_app.rb sexta-feira, 11 de fevereiro de 2011
  • 20. $ ruby my_app.rb sexta-feira, 11 de fevereiro de 2011
  • 21. Routes http://sinatra-book.gittr.com/#routes sexta-feira, 11 de fevereiro de 2011
  • 22. 1 # simple routes 2 3 get "/contact" do 4 "http://www.zigotto.com" 5 end 6 7 # named parameters 8 9 get "/url/:username" do 10 # GET /url/jtadeulopes 11 params[:username] # => "jtadeulopes" 12 end sexta-feira, 11 de fevereiro de 2011
  • 23. HTTP Methods http://sinatra-book.gittr.com/#http_methods sexta-feira, 11 de fevereiro de 2011
  • 24. 1 get "/" do 2 "show..." 3 end 4 5 post "/" do 6 "create something..." 7 end 8 9 put "/" do 10 "update something..." 11 end 12 13 delete "/" do 14 "delete..." 15 end sexta-feira, 11 de fevereiro de 2011
  • 25. Views http://sinatra-book.gittr.com/#views sexta-feira, 11 de fevereiro de 2011
  • 26. 1 get "/" do 2 '<html> 3 <head> 4 <title>Sinatra</title> 5 </head> 6 <body> 7 <p>Primeiros passos com sinatra</p> 8 </body> 9 </html>' 10 end sexta-feira, 11 de fevereiro de 2011
  • 27. Mínimo esforço? sexta-feira, 11 de fevereiro de 2011
  • 28. 1 # erb 2 get "/" do 3 erb :index 4 end sexta-feira, 11 de fevereiro de 2011
  • 29. 1 # erb 2 get "/" do 3 erb :index 4 end sexta-feira, 11 de fevereiro de 2011
  • 30. 1 # erb 2 get "/" do 3 erb :index 4 end 1 <!-- /views/index.erb --> 2 <html> 3 <head> 4 <title>Sinatra</title> 5 </head> 6 <body> 7 <p>Primeiros passos com sinatra</p> 8 </body> 9 </html> sexta-feira, 11 de fevereiro de 2011
  • 31. 1 # erb 2 get "/" do 3 erb :index 4 end 1 <!-- /views/index.erb --> 2 <html> 3 <head> 4 <title>Sinatra</title> 5 </head> 6 <body> 7 <p>Primeiros passos com sinatra</p> 8 </body> 9 </html> sexta-feira, 11 de fevereiro de 2011
  • 32. 1 # haml 2 # render /views/index.haml 3 4 get "/" do 5 haml :index 6 end 7 8 # sass 9 # render /views/stylesheet.sass 10 11 get "/stylesheet.css" do 12 content_type "text/css", :charset => "utf-8" 13 sass :stylesheet 14 end sexta-feira, 11 de fevereiro de 2011
  • 33. Helpers http://sinatra-book.gittr.com/#helpers sexta-feira, 11 de fevereiro de 2011
  • 34. 1 helpers do 2 3 def profile_url(username) 4 "http://twitter.com/#{username}" 5 end 6 7 end 8 9 get "/url/:username" do 10 # GET /url/jtadeulopes 11 profile_url(params[:username]) 12 end sexta-feira, 11 de fevereiro de 2011
  • 35. Filters http://sinatra-book.gittr.com/#filters sexta-feira, 11 de fevereiro de 2011
  • 36. 1 before do 2 "this code will run before each request..." 3 end 4 5 get "/" do 6 "...." 7 end 8 9 after do 10 "this code will run after each request..." 11 end sexta-feira, 11 de fevereiro de 2011
  • 37. Configuration http://sinatra-book.gittr.com/#configuration sexta-feira, 11 de fevereiro de 2011
  • 38. 1 # all environments 2 configure do 3 "..." 4 end 5 6 # production 7 configure :production do 8 set :domain, "http://www.site.com" 9 not_found do 10 erb :"404" 11 end 12 error do 13 erb :"500" 14 end 15 end 16 17 # multiple 18 configure :development, :test do 19 set :domain, "http://localhost:4567" 20 end 21 22 # GET / 23 get "/" do 24 "my domain is #{options.domain}" 25 end sexta-feira, 11 de fevereiro de 2011
  • 39. Models http://sinatra-book.gittr.com/#models sexta-feira, 11 de fevereiro de 2011
  • 40. ActiveRecord $ gem install activerecord sexta-feira, 11 de fevereiro de 2011
  • 41. 1 # my_app.rb 2 require "rubygems" 3 require "sinatra" 4 require "active_record" 5 6 # connection settings 7 ActiveRecord::Base.establish_connection( 8 :adapter => 'mysql2', 9 :host => "localhost", 10 :username => "my_user", 11 :password => "my_password", 12 :database => "app_development" 13 ) 14 15 # you already have a 'vehicles' table in your database 16 class Vehicle < ActiveRecord::Base 17 end 18 19 get "/" do 20 @vehicles = Vehicle.all 21 erb :index 22 end sexta-feira, 11 de fevereiro de 2011
  • 42. Testing http://www.sinatrarb.com/testing.html sexta-feira, 11 de fevereiro de 2011
  • 43. Test::Unit 1 # my_app_test.rb 2 require './my_app' $ gem install rack-test 3 require 'test/unit' 4 require 'rack/test' 5 6 class MyAppTest < Test::Unit::TestCase 7 include Rack::Test::Methods 8 9 def app 10 Sinatra::Application 11 end 12 13 def test_my_contact 14 get '/contact' 15 assert_equal 'http://www.zigotto.com', last_response.body 16 end 17 18 def test_with_params 19 get '/url/jtadeulopes' 20 assert_equal 'http://twitter.com/jtadeulopes', last_response.body 21 end 22 23 end sexta-feira, 11 de fevereiro de 2011
  • 44. 1 2 # my_app_spec.rb require './my_app' Rspec 3 require 'rack/test' $ gem install rspec 4 require 'rspec' 5 6 set :environment, :test 7 8 describe 'MyApp' do 9 include Rack::Test::Methods 10 11 def app 12 Sinatra::Application 13 end 14 15 it "should return url of contact" do 16 get '/contact' 17 last_response.should be_ok 18 last_response.body.should == "http://www.zigotto.com" 19 end 20 21 it "should return twitter url" do 22 get "/url/jtadeulopes" 23 last_response.should be_ok 24 last_response.body.should == "http://twitter.com/jtadeulopes" 25 end 26 27 end sexta-feira, 11 de fevereiro de 2011
  • 45. Live coding! sexta-feira, 11 de fevereiro de 2011
  • 46. Obrigado! sexta-feira, 11 de fevereiro de 2011
  • 47. Links • http://www.sinatrarb.com • https://github.com/sinatra/sinatra • http://adam.blog.heroku.com/ • http://sinatra-book.gittr.com • http://www.sinatrarb.com • http://www.slideshare.net/cpjolicoeur/sinatra-ruby-framework-presentation • http://railsforkids.com/ sexta-feira, 11 de fevereiro de 2011