O documento fornece uma introdução ao framework web Sinatra para Ruby. Explica como instalar e configurar o Sinatra, criar rotas, usar modelos de dados e testes. O objetivo é mostrar o quão fácil é começar a desenvolver aplicações web com Sinatra usando um mínimo de código.
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
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
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