SlideShare a Scribd company logo
1 of 57
Download to read offline
Rails Metal,
Rack, and Sinatra

Adam Wiggins
Railsconf 2009
Show of hands, how
many of you...
metal
Show of hands, how
many of you...
“The gateway drug”
“The gateway drug”*



* it’s a myth, but makes good analogy
Rails Metal is a
gateway
Rails Metal is a
gateway to the
world of Rack
What can you do with
Metal?
Replace selected
URLs for a speed
boost
Example: auction site
Example: auction site
Example: auction site



            on
Majority of traffic goes to:


GET /auctions/id.xml
app/controller/auctions_controller.rb
app/controller/auctions_controller.rb

class AuctionsController < ApplicationController
  def show
    @auction = Auction.find(params[:id])

    respond_to do |format|
      format.html
      format.xml { render :xml => @auction }
    end
  end
end
app/metal/auctions_api.rb
app/metal/auctions_api.rb

class AuctionsApi
  def self.call(env)
    # implementation goes here




  end
end
app/metal/auctions_api.rb

class AuctionsApi
  def self.call(env)
    url_pattern = %r{/auctions/(d+).xml}

    if m = env['PATH_INFO'].match(url_pattern)
      # render the auction api



    else
      # pass (do nothing)
    end
  end
end
app/metal/auctions_api.rb

class AuctionsApi
  def self.call(env)
    url_pattern = %r{/auctions/(d+).xml}

    if m = env['PATH_INFO'].match(url_pattern)
      auction = Auction.find(m[1])
      [ 200, {quot;Content-Typequot; => quot;text/xmlquot;},
        auction.to_xml ]
    else
      [ 404, {}, '' ]
    end
  end
end
[
    200,
    {quot;Content-Typequot;=>quot;text/plainquot;},
    quot;Hello, Rack!quot;
]
[
    200,
    {quot;Content-Typequot;=>quot;text/plainquot;},
    quot;Hello, Rack!quot;
]
http://www.slideshare.net/adamwiggins/
ruby-isnt-just-about-rails-presentation
An explosion of Ruby
projects in the past 2
years
Tests/Specs
 Web Layer
                    Test::Unit
 ActionController
                    RSpec
 Merb
                    Shoulda
 Sinatra

ORM                     Templating
ActiveRecord            Erb
DataMapper              Haml
Sequel                  Erubis

                     Web Server
   HTTP Client
                     Mongrel
   ActiveResource
                     Thin
   RestClient
                     Ebb
   HTTParty
Tests/Specs
 Web Layer
                    Test::Unit
 ActionController



ORM                     Templating
ActiveRecord            Erb




                     Web Server
   HTTP Client
                     Mongrel
   ActiveResource
Tests/Specs
 Web Layer
                    Test::Unit
 ActionController



ORM                     Templating
ActiveRecord            Erb




                     Web Server
   HTTP Client
                     Mongrel
   ActiveResource
Tests/Specs
 Web Layer
                    Test::Unit
 ActionController
                    RSpec
 Merb
                    Shoulda
 Sinatra

ORM                     Templating
ActiveRecord            Erb
DataMapper              Haml
Sequel                  Erubis

                     Web Server
   HTTP Client
                     Mongrel
   ActiveResource
                     Thin
   RestClient
                     Ebb
   HTTParty
Tests/Specs
 Web Layer
                    Test::Unit
 ActionController
                    RSpec
 Merb
                    Shoulda
 Sinatra

ORM                     Templating
ActiveRecord            Erb
DataMapper              Haml
Sequel                  Erubis

                     Web Server
   HTTP Client
                     Mongrel
   ActiveResource
                     Thin
   RestClient
                     Ebb
   HTTParty
Tests/Specs
 Web Layer
                    Test::Unit
 ActionController
                    RSpec
 Merb
                    Shoulda
 Sinatra

ORM                     Templating
ActiveRecord            Erb
DataMapper              Haml
Sequel                  Erubis

                     Web Server
   HTTP Client
                     Mongrel
   ActiveResource
                     Thin
   RestClient
                     Ebb
   HTTParty
The world of Rack is
now within reach from
Rails
Sinatra
The classy
microframework for Ruby



http://sinatrarb.com
require 'rubygems'
require 'sinatra'

get '/hello' do
  quot;Hello, whirledquot;
end
$ ruby hello.rb
== Sinatra/0.9.1.1 has taken the stage
>> Thin web server (v1.0.0)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567
$ ruby hello.rb
== Sinatra/0.9.1.1 has taken the stage
>> Thin web server (v1.0.0)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567

$ curl http://localhost:4567/hello
Hello, whirled
A minimalist paradise
require 'rubygems'
require 'sinatra'
require 'lib/article'

post '/articles' do
  article = Article.create! params
  redirect quot;/articles/#{article.id}quot;
end

get '/articles/:id' do
  @article = Article.find(params[:id])
  erb :article
end
Sinatra in your Rails
app?
Replace selected
URLs for a speed
boost
Replace selected
URLs for a speed
boost
Replace selected
URLs with Sinatra
app/metal/articles.rb
app/metal/articles.rb
require 'sinatra/base'

class Articles < Sinatra::Base
  post '/articles' do
    article = Article.create! params
    redirect quot;/articles/#{article.id}quot;
  end

  get '/articles/:id' do
    @article = Article.find(params[:id])
    erb :article
  end
end
Back to the auction
example
Back to the auction
example
ActionController
class AuctionsController < ApplicationController
  def show
    @auction = Auction.find(params[:id])

    respond_to do |format|
      format.html
      format.xml { render :xml => @auction }
    end
  end
end
Pure Rack
class AuctionsApi
  def self.call(env)
    url_pattern = /^/auctions/(d+).xml$/

    if m = env['PATH_INFO'].match(url_pattern)
      auction = Auction.find(m[1])
      [ 200, {quot;Content-Typequot; => quot;text/xmlquot;},
        auction.to_xml ]
    else
      [ 404, {}, '' ]
    end
  end
end
Sinatra
get '/auctions/:id.xml'
 Auction.find(params[:id]).to_xml
end
Sinatra
get '/auctions/:id.xml'
 Auction.find(params[:id]).to_xml
end




Now that’s what I call

         minimalist.
The End.
http://railscasts.com/episodes/150-rails-metal
http://rack.rubyforge.org
http://sinatrarb.com

http://adam.blog.heroku.com

Adam Wiggins
Railsconf 2009

More Related Content

What's hot

Foreman - Process manager for applications with multiple components
Foreman - Process manager for applications with multiple componentsForeman - Process manager for applications with multiple components
Foreman - Process manager for applications with multiple componentsStoyan Zhekov
 
Ninad cucumber rails
Ninad cucumber railsNinad cucumber rails
Ninad cucumber railsninad23p
 
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]Johan Janssen
 
A tour of (advanced) Akka features in 40 minutes
A tour of (advanced) Akka features in 40 minutesA tour of (advanced) Akka features in 40 minutes
A tour of (advanced) Akka features in 40 minutesJohan Janssen
 
When Two Worlds Collide: Java and Ruby in the Enterprise
When Two Worlds Collide: Java and Ruby in the EnterpriseWhen Two Worlds Collide: Java and Ruby in the Enterprise
When Two Worlds Collide: Java and Ruby in the Enterprisebenbrowning
 
Complex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBoxComplex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBoxbobmcwhirter
 
TorqueBox for Rubyists
TorqueBox for RubyistsTorqueBox for Rubyists
TorqueBox for Rubyistsbobmcwhirter
 
Wire once, rewire twice! (Haskell exchange-2018)
Wire once, rewire twice! (Haskell exchange-2018)Wire once, rewire twice! (Haskell exchange-2018)
Wire once, rewire twice! (Haskell exchange-2018)Eric Torreborre
 
Apache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxApache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxClaus Ibsen
 
Mongrel Handlers
Mongrel HandlersMongrel Handlers
Mongrel Handlersnextlib
 
.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011Fabio Akita
 
Adventurous Merb
Adventurous MerbAdventurous Merb
Adventurous MerbMatt Todd
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011bobmcwhirter
 
Crash course to the Apache Camel
Crash course to the Apache CamelCrash course to the Apache Camel
Crash course to the Apache CamelHenryk Konsek
 
Rack is Spectacular
Rack is SpectacularRack is Spectacular
Rack is SpectacularBryce Kerley
 
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9Ilya Grigorik
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...bobmcwhirter
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache CamelClaus Ibsen
 

What's hot (19)

Foreman - Process manager for applications with multiple components
Foreman - Process manager for applications with multiple componentsForeman - Process manager for applications with multiple components
Foreman - Process manager for applications with multiple components
 
Ninad cucumber rails
Ninad cucumber railsNinad cucumber rails
Ninad cucumber rails
 
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
 
A tour of (advanced) Akka features in 40 minutes
A tour of (advanced) Akka features in 40 minutesA tour of (advanced) Akka features in 40 minutes
A tour of (advanced) Akka features in 40 minutes
 
When Two Worlds Collide: Java and Ruby in the Enterprise
When Two Worlds Collide: Java and Ruby in the EnterpriseWhen Two Worlds Collide: Java and Ruby in the Enterprise
When Two Worlds Collide: Java and Ruby in the Enterprise
 
Complex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBoxComplex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBox
 
TorqueBox for Rubyists
TorqueBox for RubyistsTorqueBox for Rubyists
TorqueBox for Rubyists
 
Wire once, rewire twice! (Haskell exchange-2018)
Wire once, rewire twice! (Haskell exchange-2018)Wire once, rewire twice! (Haskell exchange-2018)
Wire once, rewire twice! (Haskell exchange-2018)
 
Apache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxApache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the box
 
Mongrel Handlers
Mongrel HandlersMongrel Handlers
Mongrel Handlers
 
Devignition 2011
Devignition 2011Devignition 2011
Devignition 2011
 
.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011
 
Adventurous Merb
Adventurous MerbAdventurous Merb
Adventurous Merb
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011
 
Crash course to the Apache Camel
Crash course to the Apache CamelCrash course to the Apache Camel
Crash course to the Apache Camel
 
Rack is Spectacular
Rack is SpectacularRack is Spectacular
Rack is Spectacular
 
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 

Viewers also liked

Free workshop: Carbon Footprint 101
Free workshop: Carbon Footprint 101Free workshop: Carbon Footprint 101
Free workshop: Carbon Footprint 101Sasin SEC
 
Voting powerpoint
Voting powerpointVoting powerpoint
Voting powerpointyaisagomez
 
Twitter At Interaction09
Twitter At Interaction09Twitter At Interaction09
Twitter At Interaction09Whitney Hess
 
The Integral Designer: Developing You
The Integral Designer: Developing YouThe Integral Designer: Developing You
The Integral Designer: Developing YouWhitney Hess
 
Finding Your Story: Branding & Positioning in the Hosting Industry
Finding Your Story: Branding & Positioning in the Hosting IndustryFinding Your Story: Branding & Positioning in the Hosting Industry
Finding Your Story: Branding & Positioning in the Hosting IndustrySimon West
 
DIY UX - Higher Ed
DIY UX - Higher EdDIY UX - Higher Ed
DIY UX - Higher EdWhitney Hess
 
The 7 P's of Physician Brand Marketing
The 7 P's of Physician Brand MarketingThe 7 P's of Physician Brand Marketing
The 7 P's of Physician Brand MarketingMatthew Scott
 
What is Crowdsourcing
What is CrowdsourcingWhat is Crowdsourcing
What is CrowdsourcingAliza Sherman
 
DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)
DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)
DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)Whitney Hess
 
Evangelizing Yourself
Evangelizing YourselfEvangelizing Yourself
Evangelizing YourselfWhitney Hess
 
Data Driven Design Research Personas
Data Driven Design Research PersonasData Driven Design Research Personas
Data Driven Design Research PersonasTodd Zaki Warfel
 
Transcending Our Tribe
Transcending Our TribeTranscending Our Tribe
Transcending Our TribeWhitney Hess
 
Do You Speak Jackal or Giraffe? Designing Sustainable Relationships
Do You Speak Jackal or Giraffe? Designing Sustainable RelationshipsDo You Speak Jackal or Giraffe? Designing Sustainable Relationships
Do You Speak Jackal or Giraffe? Designing Sustainable RelationshipsWhitney Hess
 
What's Your Problem? Putting Purpose Back into Your Projects
What's Your Problem? Putting Purpose Back into Your ProjectsWhat's Your Problem? Putting Purpose Back into Your Projects
What's Your Problem? Putting Purpose Back into Your ProjectsWhitney Hess
 
The Brand Gap
The Brand GapThe Brand Gap
The Brand GapSj -
 

Viewers also liked (20)

Free workshop: Carbon Footprint 101
Free workshop: Carbon Footprint 101Free workshop: Carbon Footprint 101
Free workshop: Carbon Footprint 101
 
Voting powerpoint
Voting powerpointVoting powerpoint
Voting powerpoint
 
YOU ARE A BRAND: Social media and job market
YOU ARE A BRAND: Social media and job marketYOU ARE A BRAND: Social media and job market
YOU ARE A BRAND: Social media and job market
 
The Brand Gap
The Brand GapThe Brand Gap
The Brand Gap
 
Twitter At Interaction09
Twitter At Interaction09Twitter At Interaction09
Twitter At Interaction09
 
Sin título 1
Sin título 1Sin título 1
Sin título 1
 
The Integral Designer: Developing You
The Integral Designer: Developing YouThe Integral Designer: Developing You
The Integral Designer: Developing You
 
Finding Your Story: Branding & Positioning in the Hosting Industry
Finding Your Story: Branding & Positioning in the Hosting IndustryFinding Your Story: Branding & Positioning in the Hosting Industry
Finding Your Story: Branding & Positioning in the Hosting Industry
 
DIY UX - Higher Ed
DIY UX - Higher EdDIY UX - Higher Ed
DIY UX - Higher Ed
 
The 7 P's of Physician Brand Marketing
The 7 P's of Physician Brand MarketingThe 7 P's of Physician Brand Marketing
The 7 P's of Physician Brand Marketing
 
Public opinion
Public opinionPublic opinion
Public opinion
 
What is Crowdsourcing
What is CrowdsourcingWhat is Crowdsourcing
What is Crowdsourcing
 
DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)
DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)
DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)
 
Evangelizing Yourself
Evangelizing YourselfEvangelizing Yourself
Evangelizing Yourself
 
Data Driven Design Research Personas
Data Driven Design Research PersonasData Driven Design Research Personas
Data Driven Design Research Personas
 
Transcending Our Tribe
Transcending Our TribeTranscending Our Tribe
Transcending Our Tribe
 
Do You Speak Jackal or Giraffe? Designing Sustainable Relationships
Do You Speak Jackal or Giraffe? Designing Sustainable RelationshipsDo You Speak Jackal or Giraffe? Designing Sustainable Relationships
Do You Speak Jackal or Giraffe? Designing Sustainable Relationships
 
What's Your Problem? Putting Purpose Back into Your Projects
What's Your Problem? Putting Purpose Back into Your ProjectsWhat's Your Problem? Putting Purpose Back into Your Projects
What's Your Problem? Putting Purpose Back into Your Projects
 
Startup Marketing
Startup MarketingStartup Marketing
Startup Marketing
 
The Brand Gap
The Brand GapThe Brand Gap
The Brand Gap
 

Similar to Rails Metal, Rack, and Sinatra

Ruby and Rails for womens
Ruby and Rails for womensRuby and Rails for womens
Ruby and Rails for womenss4nx
 
TorqueBox - Ruby Hoedown 2011
TorqueBox - Ruby Hoedown 2011TorqueBox - Ruby Hoedown 2011
TorqueBox - Ruby Hoedown 2011Lance Ball
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - DeploymentFabio Akita
 
Lightweight Webservices with Sinatra and RestClient
Lightweight Webservices with Sinatra and RestClientLightweight Webservices with Sinatra and RestClient
Lightweight Webservices with Sinatra and RestClientAdam Wiggins
 
09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do railsDNAD
 
RoR 101: Session 1
RoR 101: Session 1RoR 101: Session 1
RoR 101: Session 1Rory Gianni
 
Lets build-ruby-app-server: Vineet tyagi
Lets build-ruby-app-server: Vineet tyagiLets build-ruby-app-server: Vineet tyagi
Lets build-ruby-app-server: Vineet tyagiThoughtWorks
 
Rails 2.0 Presentation
Rails 2.0 PresentationRails 2.0 Presentation
Rails 2.0 PresentationScott Chacon
 
Building web framework with Rack
Building web framework with RackBuilding web framework with Rack
Building web framework with Racksickill
 
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...Alberto Perdomo
 
Php assíncrono com_react_php
Php assíncrono com_react_phpPhp assíncrono com_react_php
Php assíncrono com_react_phpRenato Lucena
 
Sinatra Introduction
Sinatra IntroductionSinatra Introduction
Sinatra IntroductionYi-Ting Cheng
 
Ruby w/o Rails (Олександр Сімонов)
Ruby w/o Rails (Олександр Сімонов)Ruby w/o Rails (Олександр Сімонов)
Ruby w/o Rails (Олександр Сімонов)Fwdays
 
20120121 rbc rails_routing
20120121 rbc rails_routing20120121 rbc rails_routing
20120121 rbc rails_routingTakeshi AKIMA
 
2010-04-13 Reactor Pattern & Event Driven Programming 2
2010-04-13 Reactor Pattern & Event Driven Programming 22010-04-13 Reactor Pattern & Event Driven Programming 2
2010-04-13 Reactor Pattern & Event Driven Programming 2Lin Jen-Shin
 
Ruby Conf Preso
Ruby Conf PresoRuby Conf Preso
Ruby Conf PresoDan Yoder
 

Similar to Rails Metal, Rack, and Sinatra (20)

Ruby and Rails for womens
Ruby and Rails for womensRuby and Rails for womens
Ruby and Rails for womens
 
TorqueBox - Ruby Hoedown 2011
TorqueBox - Ruby Hoedown 2011TorqueBox - Ruby Hoedown 2011
TorqueBox - Ruby Hoedown 2011
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - Deployment
 
Lightweight Webservices with Sinatra and RestClient
Lightweight Webservices with Sinatra and RestClientLightweight Webservices with Sinatra and RestClient
Lightweight Webservices with Sinatra and RestClient
 
09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails
 
Merb tutorial
Merb tutorialMerb tutorial
Merb tutorial
 
Deployment de Rails
Deployment de RailsDeployment de Rails
Deployment de Rails
 
RoR 101: Session 1
RoR 101: Session 1RoR 101: Session 1
RoR 101: Session 1
 
Lets build-ruby-app-server: Vineet tyagi
Lets build-ruby-app-server: Vineet tyagiLets build-ruby-app-server: Vineet tyagi
Lets build-ruby-app-server: Vineet tyagi
 
Rails 2.0 Presentation
Rails 2.0 PresentationRails 2.0 Presentation
Rails 2.0 Presentation
 
Building web framework with Rack
Building web framework with RackBuilding web framework with Rack
Building web framework with Rack
 
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
 
Php assíncrono com_react_php
Php assíncrono com_react_phpPhp assíncrono com_react_php
Php assíncrono com_react_php
 
Angular for rubyists
Angular for rubyistsAngular for rubyists
Angular for rubyists
 
Sinatra Introduction
Sinatra IntroductionSinatra Introduction
Sinatra Introduction
 
Ruby w/o Rails (Олександр Сімонов)
Ruby w/o Rails (Олександр Сімонов)Ruby w/o Rails (Олександр Сімонов)
Ruby w/o Rails (Олександр Сімонов)
 
20120121 rbc rails_routing
20120121 rbc rails_routing20120121 rbc rails_routing
20120121 rbc rails_routing
 
2010-04-13 Reactor Pattern & Event Driven Programming 2
2010-04-13 Reactor Pattern & Event Driven Programming 22010-04-13 Reactor Pattern & Event Driven Programming 2
2010-04-13 Reactor Pattern & Event Driven Programming 2
 
Where is my scalable API?
Where is my scalable API?Where is my scalable API?
Where is my scalable API?
 
Ruby Conf Preso
Ruby Conf PresoRuby Conf Preso
Ruby Conf Preso
 

More from Adam Wiggins

Waza keynote: Idea to Delivery
Waza keynote: Idea to DeliveryWaza keynote: Idea to Delivery
Waza keynote: Idea to DeliveryAdam Wiggins
 
The Epic Pivot: Heroku's Story
The Epic Pivot: Heroku's StoryThe Epic Pivot: Heroku's Story
The Epic Pivot: Heroku's StoryAdam Wiggins
 
Next-Generation Ruby Deployment with Heroku
Next-Generation Ruby Deployment with HerokuNext-Generation Ruby Deployment with Heroku
Next-Generation Ruby Deployment with HerokuAdam Wiggins
 
Nginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP TricksNginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP TricksAdam Wiggins
 
rush, the Ruby shell and Unix integration library
rush, the Ruby shell and Unix integration libraryrush, the Ruby shell and Unix integration library
rush, the Ruby shell and Unix integration libraryAdam Wiggins
 

More from Adam Wiggins (6)

Waza keynote: Idea to Delivery
Waza keynote: Idea to DeliveryWaza keynote: Idea to Delivery
Waza keynote: Idea to Delivery
 
The Epic Pivot: Heroku's Story
The Epic Pivot: Heroku's StoryThe Epic Pivot: Heroku's Story
The Epic Pivot: Heroku's Story
 
Cloud Services
Cloud ServicesCloud Services
Cloud Services
 
Next-Generation Ruby Deployment with Heroku
Next-Generation Ruby Deployment with HerokuNext-Generation Ruby Deployment with Heroku
Next-Generation Ruby Deployment with Heroku
 
Nginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP TricksNginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP Tricks
 
rush, the Ruby shell and Unix integration library
rush, the Ruby shell and Unix integration libraryrush, the Ruby shell and Unix integration library
rush, the Ruby shell and Unix integration library
 

Recently uploaded

Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 

Recently uploaded (20)

Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 

Rails Metal, Rack, and Sinatra