Sinatra - Primeiros Passos

1,559 views

Published on

Zigotto labs em 11 de Fevereiro de 2011
Por Jésus Lopes

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,559
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Sinatra - Primeiros Passos

  1. 1. Sinatra Primeiros passos por Jésus Lopes #zigottolabs @jtadeulopessexta-feira, 11 de fevereiro de 2011
  2. 2. #zigottolabssexta-feira, 11 de fevereiro de 2011
  3. 3. rubysexta-feira, 11 de fevereiro de 2011
  4. 4. web rubysexta-feira, 11 de fevereiro de 2011
  5. 5. framework web rubysexta-feira, 11 de fevereiro de 2011
  6. 6. framework web ruby developmentsexta-feira, 11 de fevereiro de 2011
  7. 7. framework web ruby applications developmentsexta-feira, 11 de fevereiro de 2011
  8. 8. framework web ruby applications development open-sourcesexta-feira, 11 de fevereiro de 2011
  9. 9. e o Rails?sexta-feira, 11 de fevereiro de 2011
  10. 10. Ele é o mais utilizado, mas não é o único!sexta-feira, 11 de fevereiro de 2011
  11. 11. 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
  12. 12. O que eu preciso?sexta-feira, 11 de fevereiro de 2011
  13. 13. O que eu preciso? $ gem install sinatrasexta-feira, 11 de fevereiro de 2011
  14. 14. O que eu preciso? $ gem install sinatra pronto =)sexta-feira, 11 de fevereiro de 2011
  15. 15. Primeiro exemplosexta-feira, 11 de fevereiro de 2011
  16. 16. Primeiro exemplosexta-feira, 11 de fevereiro de 2011
  17. 17. Primeiro exemplo Mínimo de esforço, ok?sexta-feira, 11 de fevereiro de 2011
  18. 18. 1 # my_app.rb 2 require "rubygems" 3 require "sinatra" 4 5 6 get "/" do 7 "#zigottolabs" 8 endsexta-feira, 11 de fevereiro de 2011
  19. 19. $ ruby my_app.rbsexta-feira, 11 de fevereiro de 2011
  20. 20. $ ruby my_app.rbsexta-feira, 11 de fevereiro de 2011
  21. 21. Routes http://sinatra-book.gittr.com/#routessexta-feira, 11 de fevereiro de 2011
  22. 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 endsexta-feira, 11 de fevereiro de 2011
  23. 23. HTTP Methods http://sinatra-book.gittr.com/#http_methodssexta-feira, 11 de fevereiro de 2011
  24. 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 endsexta-feira, 11 de fevereiro de 2011
  25. 25. Views http://sinatra-book.gittr.com/#viewssexta-feira, 11 de fevereiro de 2011
  26. 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 endsexta-feira, 11 de fevereiro de 2011
  27. 27. Mínimo esforço?sexta-feira, 11 de fevereiro de 2011
  28. 28. 1 # erb 2 get "/" do 3 erb :index 4 endsexta-feira, 11 de fevereiro de 2011
  29. 29. 1 # erb 2 get "/" do 3 erb :index 4 endsexta-feira, 11 de fevereiro de 2011
  30. 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. 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. 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 endsexta-feira, 11 de fevereiro de 2011
  33. 33. Helpers http://sinatra-book.gittr.com/#helperssexta-feira, 11 de fevereiro de 2011
  34. 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 endsexta-feira, 11 de fevereiro de 2011
  35. 35. Filters http://sinatra-book.gittr.com/#filterssexta-feira, 11 de fevereiro de 2011
  36. 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 endsexta-feira, 11 de fevereiro de 2011
  37. 37. Configuration http://sinatra-book.gittr.com/#configurationsexta-feira, 11 de fevereiro de 2011
  38. 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 endsexta-feira, 11 de fevereiro de 2011
  39. 39. Models http://sinatra-book.gittr.com/#modelssexta-feira, 11 de fevereiro de 2011
  40. 40. ActiveRecord $ gem install activerecordsexta-feira, 11 de fevereiro de 2011
  41. 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 endsexta-feira, 11 de fevereiro de 2011
  42. 42. Testing http://www.sinatrarb.com/testing.htmlsexta-feira, 11 de fevereiro de 2011
  43. 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 endsexta-feira, 11 de fevereiro de 2011
  44. 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 endsexta-feira, 11 de fevereiro de 2011
  45. 45. Live coding!sexta-feira, 11 de fevereiro de 2011
  46. 46. Obrigado!sexta-feira, 11 de fevereiro de 2011
  47. 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

×