Upload
justinsmestad3577
View
227
Download
0
Embed Size (px)
Citation preview
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 160/173
http://github.com/sinatra/sinatra
http://github.com/chneukirchen/rack
http://github.com/atmos/hancock http://github.com/atmos/hancock-client
http://github.com/atmos/hancock-client-r ails
http://github.com/brynary/rack-bug
http://github.com/foca/integrity
Thursday, May 14, 2009
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