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

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
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
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
 

Recently uploaded (20)

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
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
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
 

Rails Metal, Rack, and Sinatra