sinatra 0.9 - corey donohoe

173
Corey Donohoe([email protected] ) Sinatra (Cl|S)assy Web Development Thursday, May 14, 2009

Upload: justinsmestad3577

Post on 30-May-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 1/173

Corey Donohoe([email protected]

)

Sinatra(Cl|S)assy Web Development

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 2/173

Corey [email protected] / http://atmos.org

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 3/173

Open Source Participant

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 4/173

2001

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 5/173

Writing Rails since 2004

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 6/173

Engine Yard in March 2007

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 7/173

ran support for a while

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 8/173

“integration” team

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 9/173

It’s Take Your Breath Away Awesome

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 10/173

http://github.com/sinatra

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 11/173

Micro Framework

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 12/173

powered by rack

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 13/173

history

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 14/173

advances

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 15/173

fulfilling

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 16/173

Classic Applicationsget(‘/’) { “Hello World” }

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 17/173

http://sinatrarb.com

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 18/173

Hello World

require 'rubygems'require 'sinatra'

helpers do def greeting

haml :greeting endend

template :greeting do

"%h2 Hello World"end

get('/') dogreeting

end

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 19/173

throw that in a file

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 20/173

run it

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 21/173

Where’s my config file?

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 22/173

where’s my database.yml

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 23/173

There isn’t one(there isn’t even a db)

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 24/173

Wonderful for One Offs

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 25/173

HTTP Verbs

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 26/173

["/foo", "/bar", "/baz"].each do |path|get path do

"You've reached me at #{request.path_info}" endend

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 27/173

Block Syntax

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 28/173

get '/hello/:name' do |n|"Hello #{n}!"

end

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 29/173

params hash

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 30/173

templates

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 31/173

template :foo do<<-HAML

%h2 Greetings%p Lorem IpsumHAMLend

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 32/173

set :views, ‘views’

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 33/173

views/foo.haml

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 34/173

helpers do; end

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 35/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 36/173

Configuration Options

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 37/173

enable :sessions

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 38/173

set :public , ‘public ’

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 39/173

set :foo , 'bar'set :baz , Proc . new { "Hello " + foo }

get '/baz' do"baz is set to " + options.baz

end

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 40/173

enable/disable

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 41/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 42/173

Modular Styleclass MyApp < Sinatra::Default; end

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 43/173

remove global scope

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 44/173

instances

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 45/173

reusable instances

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 46/173

module Hancock class ConfigurationError < StandardError; end

class App < Sinatra::Defaultenable :sessions

set :sreg_params , [ :email , :first_name , :last_name , :internal ]set :provider_name , 'Hancock SSO Provider!'set :do_not_reply , nil

register Sinatra :: Hancock ::Defaultsregister Sinatra :: Hancock ::Sessionsregister Sinatra :: Hancock ::Usersregister Sinatra :: Hancock ::OpenIDServer

end

end

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 47/173

global scope moved inside my class

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 48/173

as class methods

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 49/173

pretty much works the same

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 50/173

register class methodnice modular pieces of sinatra apps

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 51/173

module Sinatra module Hancock module Sessions def self.sessions_template (file)

template = File .expand_path( File .dirname(__FILE__) +'/views/sessions' ) File .read( "#{template}/#{file}.haml" ) end

module Helpers def session_user

session[ 'user_id' ].nil? ? nil : :: Hancock :: User .get(session[ 'user_id' ]) end end

def self.registered (app)app.helpers( Sinatra :: Hancock :: Sessions ::Helpers)app.template( :unauthenticated ) { sessions_template ( 'unauthenticated' ) }app.get '/sso/login' do

ensure_authenticated endapp.post '/sso/login' do

@user = :: Hancock :: User .authenticate(params[ 'email' ], params[ 'password' ]) if @user

session[ 'user_id' ] = @user.id end

ensure_authenticatedredirect session[ 'return_to' ] || '/'

end

app.get '/sso/logout' dosession.clearredirect '/'

end end end endend

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 52/173

Sinatra::Hancock::Sessions

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 53/173

lib/sinatra/hancock/sessions.rb

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 54/173

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 55/173

auto register by requiring

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 56/173

no one is really using this

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 57/173

module Hancock class ConfigurationError < StandardError; end

class App < Sinatra::Defaultenable :sessions

set :sreg_params , [ :email , :first_name , :last_name , :internal ]set :provider_name , 'Hancock SSO Provider!'set :do_not_reply , nil

register Sinatra :: Hancock ::Defaultsregister Sinatra :: Hancock ::Sessionsregister Sinatra :: Hancock ::Usersregister Sinatra :: Hancock ::OpenIDServer

endend

OMG LOOK WHAT I MADE!you can share it with your buddies

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 58/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 59/173

under the hoodyo dawg, i heard you were into rack

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 60/173

http://github.com/chneukirchen/rack

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 61/173

bacon

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 62/173

i don’t use it

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 63/173

made up the tumblelog

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 64/173

racku

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 65/173

species the app to run

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 66/173

congurable stuff, ports, hostnames etc

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 67/173

middleware to run also

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 68/173

use

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 69/173

specic middleware

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 70/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 71/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 72/173

#!/usr/bin/env rackup

use EySso do |sso|sso.only_staff!

end

# vim:filetype=ruby

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 73/173

use in Sinatra

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 74/173

initialize arity

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 75/173

rst parameter is the app

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 76/173

it’s implied

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 77/173

use Rack::HoptoadNotifier,‘ 10c4cc2f6aa6b9e1104a921c5fdae4b0846d4475 ’

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 78/173

Rack::HoptoadNotifier.new(app,‘ 10c4cc2f6aa6b9e1104a921c5fdae4b0846d4475 ’)

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 79/173

initialize w/ a block

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 80/173

use in Rails

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 81/173

cong.middleware.use

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 82/173

it’s a string

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 83/173

script/generate metal

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 84/173

works with Sinatra::Default

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 85/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 86/173

use in merb

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 87/173

no rack.session

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 88/173

cong/rack.rb

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 89/173

who still writes merb apps?

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 90/173

use in ramaze

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 91/173

no rack.session

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 92/173

not becoming rails

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 93/173

map

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 94/173

russian doll

Thursday, May 14, 2009

#!/ /bi / k

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 95/173

#!/usr/bin/env rackup

require File .dirname(__FILE__) + '/lib/setup'require 'gateway/app'require 'migration/app'

use Rack ::Static, :urls => [ "/css" , "/img" , "/js" ], :root => "public"

map "/gateway/" douse EySsorun Gateway ::App

end

map "/migration/" douse Rack ::ShowExceptions

if ENV["RACK_ENV"] == "production"use EySso do |sso|

sso.only_staff! end end

run Migration ::App

end

map "/" doapp = lambda do |env|

[ 404 , { "Content-Type" => "text/plain" , "Content-Length" => "9" }, [ "Not found" ]] end

run append

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 96/173

with a url helper hack

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 97/173

helpers do def url (path)

request.script_name + path endend

Thursday, May 14, 2009

#!/usr/bin/env rackup

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 98/173

#!/usr/bin/env rackup

require File .dirname(__FILE__) + '/lib/setup'require 'gateway/app'require 'migration/app'

use Rack ::Static, :urls => [ "/css" , "/img" , "/js" ], :root => "public"

map "/gateway/" douse EySsorun Gateway ::App

end

map "/migration/" douse Rack ::ShowExceptions

if ENV["RACK_ENV"] == "production"use EySso do |sso|

sso.only_staff! end end

run Migration ::App

end

map "/" doapp = lambda do |env|

[ 404 , { "Content-Type" => "text/plain" , "Content-Length" => "9" }, [ "Not found" ]] end

run append

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 99/173

every day kinda stuff

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 100/173

so back to sinatra

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 101/173

Sinatra::Base

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 102/173

this is middleware

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 103/173

you should really read the docs

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 104/173

straight rack, no sinatra

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 105/173

major frameworks integrate ok

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 106/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 107/173

this is a sinatra application

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 108/173

these are FUN

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 109/173

your rackup les invoke these

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 110/173

so you got all that, right?

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 111/173

Deployment

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 112/173

easy

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 113/173

Passenger

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 114/173

nginx

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 115/173

http {...server {

listen 80;server_name hancock.atmos.orgroot /data/hancock;passenger_enabled on; # <--- These linespassenger_base_uri /hancock; # <--- added.

}...}

nginx cong

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 116/173

apache

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 117/173

<VirtualHost *:80>ServerName hancock.atmos.orgDocumentRoot /data/hancock/current/publicRackEnv 'production'

<Directory /data/hancock/current/public>Options FollowSymLinksAllowOverride NoneOrder allow,deny

Allow from all </Directory></VirtualHost>

Apache 2 Vhost Cong

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 118/173

script/

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 119/173

#!/usr/bin/env rubyrequire "irb"require 'rubygems'require 'twitrsvp'

DataMapper .setup( :default , "mysql://atmos:s3cr3t@localhost/twitrsvp_production" )

ENV['TWIT_RSVP_READKEY'] = '4the'ENV['TWIT_RSVP_READSECRET'] = 'lulz'

include ::TwitRSVP

if __FILE__ == $0 IRB.start(__FILE__)else

# check -e option if /^-e$/ =~ $0 IRB.start(__FILE__) else IRB.setup(__FILE__) endend

script/console

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 120/173

crons, whatever

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 121/173

gnu screen

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 122/173

TestingFleshing things out

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 123/173

i’m a huge fan

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 124/173

TATFT

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 125/173

acceptance testing

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 126/173

TDD as a design tool

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 127/173

Sinatra::Test

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 128/173

is Deprecated

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 129/173

Sticky Sessions Inside Your Tests

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 130/173

rack-testhttp://github.com/brynary/rack-test/tree/master

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 131/173

require "rack/test"

class HomepageTest < Test::Unit::TestCase include Rack :: Test :: Methods

def app MyApp. new end

def test_redirect_logged_in_users_to_dashboardauthorize "bryan", "secret"get "/"follow_redirect!

assert_equal "http://example.org/redirected", last_request.urlassert last_response.ok?

endend

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 132/173

Webrat Matchers

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 133/173

What You Should Be Doing

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 134/173

Webrathttp://github.com/brynary/webrat

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 135/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 136/173

have_selector("#zendesk_organization_2 .name:contains('Zondervan’)”)

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 137/173

Cucumberhttp://github.com/aslakhellesoy/cucumber/tree/master

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 138/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 139/173

rack-test verbs instead of visit

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 140/173

webrat selectors for validations

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 141/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 142/173

safariwatir and selenium-rc

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 143/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 144/173

reflection

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 145/173

simple

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 146/173

reusable

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 147/173

nice performance

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 148/173

not fighting my framework

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 149/173

leverage all the ruby libs

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 150/173

develop like a pro

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 151/173

not overwhelmed with choices

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 152/173

future is known

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 153/173

merb

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 154/173

rails 3

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 155/173

think UNIX

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 156/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 157/173

creative juices flowing

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 158/173

hack out something fun

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 159/173

solve something annoying

Thursday, May 14, 2009

That’s it! :D

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 161/173

Hancock

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 162/173

Like Your John Hancock

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 163/173

Single Sign On

Thursday, May 14, 2009

gem 'hancock' , '~>0.0.1'require 'hancock'

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 164/173

DataMapper.setup( :default , "sqlite3:///#{Dir.pwd}/development.db" )

Hancock::App.set :views , 'views'Hancock::App.set :public , 'public'Hancock::App.set :environment , :production

Hancock::App.set :provider_name , 'Example SSO Provider'Hancock::App.set :do_not_reply , '[email protected]'

Sinatra::Mailer.config = {

:host => 'smtp.example.com' , :port => '25' , :user => 'sso' , :pass => 'lolerskates' , :auth => :plain # :plain, :login, :cram_md5, the default is no auth :domain => "example.com" # the HELO domain provided by the client to the server}

run Hancock:: App

cong.ru

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 165/173

Example

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 166/173

Hancock-Client

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 167/173

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 168/173

Rack App

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 169/173

Hancock-Client-Rails

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 170/173

metal

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 171/173

\m/

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 172/173

Rails 2.3.x

Thursday, May 14, 2009

8/14/2019 Sinatra 0.9 - Corey Donohoe

http://slidepdf.com/reader/full/sinatra-09-corey-donohoe 173/173

require File .join( File .dirname( __FILE__ ), 'boot' )require 'hancock'

Rails :: Initializer .run do | config |config. gem 'hancock' , :lib => 'hancock'

config.middleware.use 'Hancock::Client'# all your other normal stuff

end

cong/environment.rb