Sinatra - Primeiros Passos

47
Sinatra Primeiros passos por Jésus Lopes @jtadeulopes #zigottolabs sexta-feira, 11 de fevereiro de 2011

description

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

Transcript of Sinatra - Primeiros Passos

Page 1: Sinatra - Primeiros Passos

SinatraPrimeiros passos

por Jésus Lopes@jtadeulopes#zigottolabs

sexta-feira, 11 de fevereiro de 2011

Page 2: Sinatra - Primeiros Passos

#zigottolabssexta-feira, 11 de fevereiro de 2011

Page 3: Sinatra - Primeiros Passos

ruby

sexta-feira, 11 de fevereiro de 2011

Page 4: Sinatra - Primeiros Passos

ruby

web

sexta-feira, 11 de fevereiro de 2011

Page 5: Sinatra - Primeiros Passos

ruby

frameworkweb

sexta-feira, 11 de fevereiro de 2011

Page 6: Sinatra - Primeiros Passos

ruby

frameworkweb

development

sexta-feira, 11 de fevereiro de 2011

Page 7: Sinatra - Primeiros Passos

ruby

frameworkweb

developmentapplications

sexta-feira, 11 de fevereiro de 2011

Page 8: Sinatra - Primeiros Passos

ruby

frameworkweb

developmentapplications

open-source

sexta-feira, 11 de fevereiro de 2011

Page 9: Sinatra - Primeiros Passos

e o Rails?

sexta-feira, 11 de fevereiro de 2011

Page 10: Sinatra - Primeiros Passos

Ele é o mais utilizado, mas não é o único!

sexta-feira, 11 de fevereiro de 2011

Page 11: Sinatra - Primeiros Passos

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

O que eu preciso?

sexta-feira, 11 de fevereiro de 2011

Page 13: Sinatra - Primeiros Passos

O que eu preciso?

$ gem install sinatra

sexta-feira, 11 de fevereiro de 2011

Page 14: Sinatra - Primeiros Passos

O que eu preciso?

pronto =)

$ gem install sinatra

sexta-feira, 11 de fevereiro de 2011

Page 15: Sinatra - Primeiros Passos

Primeiro exemplo

sexta-feira, 11 de fevereiro de 2011

Page 16: Sinatra - Primeiros Passos

Primeiro exemplo

sexta-feira, 11 de fevereiro de 2011

Page 17: Sinatra - Primeiros Passos

Primeiro exemplo

Mínimo de esforço, ok?

sexta-feira, 11 de fevereiro de 2011

Page 18: Sinatra - Primeiros Passos

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

$ ruby my_app.rb

sexta-feira, 11 de fevereiro de 2011

Page 20: Sinatra - Primeiros Passos

$ ruby my_app.rb

sexta-feira, 11 de fevereiro de 2011

Page 21: Sinatra - Primeiros Passos

Routeshttp://sinatra-book.gittr.com/#routes

sexta-feira, 11 de fevereiro de 2011

Page 22: Sinatra - Primeiros Passos

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

HTTP Methodshttp://sinatra-book.gittr.com/#http_methods

sexta-feira, 11 de fevereiro de 2011

Page 24: Sinatra - Primeiros Passos

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

Viewshttp://sinatra-book.gittr.com/#views

sexta-feira, 11 de fevereiro de 2011

Page 26: Sinatra - Primeiros Passos

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

Mínimo esforço?

sexta-feira, 11 de fevereiro de 2011

Page 28: Sinatra - Primeiros Passos

1 # erb2 get "/" do3 erb :index4 end

sexta-feira, 11 de fevereiro de 2011

Page 29: Sinatra - Primeiros Passos

1 # erb2 get "/" do3 erb :index4 end

sexta-feira, 11 de fevereiro de 2011

Page 30: Sinatra - Primeiros Passos

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

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

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

Helpershttp://sinatra-book.gittr.com/#helpers

sexta-feira, 11 de fevereiro de 2011

Page 34: Sinatra - Primeiros Passos

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

Filtershttp://sinatra-book.gittr.com/#filters

sexta-feira, 11 de fevereiro de 2011

Page 36: Sinatra - Primeiros Passos

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

Configurationhttp://sinatra-book.gittr.com/#configuration

sexta-feira, 11 de fevereiro de 2011

Page 38: Sinatra - Primeiros Passos

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

Modelshttp://sinatra-book.gittr.com/#models

sexta-feira, 11 de fevereiro de 2011

Page 40: Sinatra - Primeiros Passos

ActiveRecord

$ gem install activerecord

sexta-feira, 11 de fevereiro de 2011

Page 41: Sinatra - Primeiros Passos

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

Testinghttp://www.sinatrarb.com/testing.html

sexta-feira, 11 de fevereiro de 2011

Page 43: Sinatra - Primeiros Passos

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

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

Live coding!

sexta-feira, 11 de fevereiro de 2011

Page 46: Sinatra - Primeiros Passos

Obrigado!

sexta-feira, 11 de fevereiro de 2011

Page 47: Sinatra - Primeiros Passos

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