sinatra - primeiros passos
DESCRIPTION
Zigotto labs em 11 de Fevereiro de 2011Por Jésus LopesTRANSCRIPT
![Page 1: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/1.jpg)
SinatraPrimeiros passos
por Jésus Lopes@jtadeulopes#zigottolabs
sexta-feira, 11 de fevereiro de 2011
![Page 2: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/2.jpg)
#zigottolabssexta-feira, 11 de fevereiro de 2011
![Page 3: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/3.jpg)
ruby
sexta-feira, 11 de fevereiro de 2011
![Page 4: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/4.jpg)
ruby
web
sexta-feira, 11 de fevereiro de 2011
![Page 5: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/5.jpg)
ruby
frameworkweb
sexta-feira, 11 de fevereiro de 2011
![Page 6: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/6.jpg)
ruby
frameworkweb
development
sexta-feira, 11 de fevereiro de 2011
![Page 7: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/7.jpg)
ruby
frameworkweb
developmentapplications
sexta-feira, 11 de fevereiro de 2011
![Page 8: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/8.jpg)
ruby
frameworkweb
developmentapplications
open-source
sexta-feira, 11 de fevereiro de 2011
![Page 9: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/9.jpg)
e o Rails?
sexta-feira, 11 de fevereiro de 2011
![Page 10: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/10.jpg)
Ele é o mais utilizado, mas não é o único!
sexta-feira, 11 de fevereiro de 2011
![Page 11: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/11.jpg)
Sinatra
“Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort”
https://github.com/sinatra/sinatrasexta-feira, 11 de fevereiro de 2011
![Page 12: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/12.jpg)
O que eu preciso?
sexta-feira, 11 de fevereiro de 2011
![Page 13: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/13.jpg)
O que eu preciso?
$ gem install sinatra
sexta-feira, 11 de fevereiro de 2011
![Page 14: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/14.jpg)
O que eu preciso?
pronto =)
$ gem install sinatra
sexta-feira, 11 de fevereiro de 2011
![Page 15: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/15.jpg)
Primeiro exemplo
sexta-feira, 11 de fevereiro de 2011
![Page 16: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/16.jpg)
Primeiro exemplo
sexta-feira, 11 de fevereiro de 2011
![Page 17: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/17.jpg)
Primeiro exemplo
Mínimo de esforço, ok?
sexta-feira, 11 de fevereiro de 2011
![Page 18: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/18.jpg)
1 # my_app.rb2 require "rubygems"3 require "sinatra"4 56 get "/" do7 "#zigottolabs"8 end
sexta-feira, 11 de fevereiro de 2011
![Page 19: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/19.jpg)
$ ruby my_app.rb
sexta-feira, 11 de fevereiro de 2011
![Page 20: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/20.jpg)
$ ruby my_app.rb
sexta-feira, 11 de fevereiro de 2011
![Page 21: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/21.jpg)
Routeshttp://sinatra-book.gittr.com/#routes
sexta-feira, 11 de fevereiro de 2011
![Page 22: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/22.jpg)
1 # simple routes 2 3 get "/contact" do 4 "http://www.zigotto.com" 5 end 6 7 # named parameters 8 9 get "/url/:username" do10 # GET /url/jtadeulopes11 params[:username] # => "jtadeulopes"12 end
sexta-feira, 11 de fevereiro de 2011
![Page 23: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/23.jpg)
HTTP Methodshttp://sinatra-book.gittr.com/#http_methods
sexta-feira, 11 de fevereiro de 2011
![Page 24: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/24.jpg)
1 get "/" do 2 "show..." 3 end 4 5 post "/" do 6 "create something..." 7 end 8 9 put "/" do10 "update something..."11 end12 13 delete "/" do14 "delete..."15 end
sexta-feira, 11 de fevereiro de 2011
![Page 25: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/25.jpg)
Viewshttp://sinatra-book.gittr.com/#views
sexta-feira, 11 de fevereiro de 2011
![Page 26: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/26.jpg)
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
![Page 27: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/27.jpg)
Mínimo esforço?
sexta-feira, 11 de fevereiro de 2011
![Page 28: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/28.jpg)
1 # erb2 get "/" do3 erb :index4 end
sexta-feira, 11 de fevereiro de 2011
![Page 29: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/29.jpg)
1 # erb2 get "/" do3 erb :index4 end
sexta-feira, 11 de fevereiro de 2011
![Page 30: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/30.jpg)
1 # erb2 get "/" do3 erb :index4 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
![Page 31: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/31.jpg)
1 # erb2 get "/" do3 erb :index4 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
![Page 32: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/32.jpg)
1 # haml 2 # render /views/index.haml 3 4 get "/" do 5 haml :index 6 end 7 8 # sass 9 # render /views/stylesheet.sass10 11 get "/stylesheet.css" do12 content_type "text/css", :charset => "utf-8"13 sass :stylesheet14 end
sexta-feira, 11 de fevereiro de 2011
![Page 33: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/33.jpg)
Helpershttp://sinatra-book.gittr.com/#helpers
sexta-feira, 11 de fevereiro de 2011
![Page 34: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/34.jpg)
1 helpers do 2 3 def profile_url(username) 4 "http://twitter.com/#{username}" 5 end 6 7 end 8 9 get "/url/:username" do10 # GET /url/jtadeulopes11 profile_url(params[:username])12 end
sexta-feira, 11 de fevereiro de 2011
![Page 35: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/35.jpg)
Filtershttp://sinatra-book.gittr.com/#filters
sexta-feira, 11 de fevereiro de 2011
![Page 36: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/36.jpg)
1 before do 2 "this code will run before each request..." 3 end 4 5 get "/" do 6 "...." 7 end 8 9 after do10 "this code will run after each request..."11 end
sexta-feira, 11 de fevereiro de 2011
![Page 37: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/37.jpg)
Configurationhttp://sinatra-book.gittr.com/#configuration
sexta-feira, 11 de fevereiro de 2011
![Page 38: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/38.jpg)
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 do10 erb :"404"11 end12 error do13 erb :"500"14 end15 end16 17 # multiple18 configure :development, :test do19 set :domain, "http://localhost:4567"20 end21 22 # GET /23 get "/" do24 "my domain is #{options.domain}"25 end
sexta-feira, 11 de fevereiro de 2011
![Page 39: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/39.jpg)
Modelshttp://sinatra-book.gittr.com/#models
sexta-feira, 11 de fevereiro de 2011
![Page 40: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/40.jpg)
ActiveRecord
$ gem install activerecord
sexta-feira, 11 de fevereiro de 2011
![Page 41: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/41.jpg)
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 database16 class Vehicle < ActiveRecord::Base17 end18 19 get "/" do20 @vehicles = Vehicle.all21 erb :index22 end
sexta-feira, 11 de fevereiro de 2011
![Page 42: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/42.jpg)
Testinghttp://www.sinatrarb.com/testing.html
sexta-feira, 11 de fevereiro de 2011
![Page 43: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/43.jpg)
1 # my_app_test.rb 2 require './my_app' 3 require 'test/unit' 4 require 'rack/test' 5 6 class MyAppTest < Test::Unit::TestCase 7 include Rack::Test::Methods 8 9 def app10 Sinatra::Application11 end12 13 def test_my_contact14 get '/contact'15 assert_equal 'http://www.zigotto.com', last_response.body16 end17 18 def test_with_params19 get '/url/jtadeulopes'20 assert_equal 'http://twitter.com/jtadeulopes', last_response.body21 end22 23 end
Test::Unit$ gem install rack-test
sexta-feira, 11 de fevereiro de 2011
![Page 44: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/44.jpg)
1 # my_app_spec.rb 2 require './my_app' 3 require 'rack/test' 4 require 'rspec' 5 6 set :environment, :test 7 8 describe 'MyApp' do 9 include Rack::Test::Methods10 11 def app12 Sinatra::Application13 end14 15 it "should return url of contact" do16 get '/contact'17 last_response.should be_ok18 last_response.body.should == "http://www.zigotto.com"19 end20 21 it "should return twitter url" do22 get "/url/jtadeulopes"23 last_response.should be_ok24 last_response.body.should == "http://twitter.com/jtadeulopes"25 end26 27 end
Rspec$ gem install rspec
sexta-feira, 11 de fevereiro de 2011
![Page 45: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/45.jpg)
Live coding!
sexta-feira, 11 de fevereiro de 2011
![Page 46: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/46.jpg)
Obrigado!
sexta-feira, 11 de fevereiro de 2011
![Page 47: Sinatra - Primeiros Passos](https://reader034.vdocuments.com.br/reader034/viewer/2022050817/55858566d8b42ab2148b4ddb/html5/thumbnails/47.jpg)
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