Sinatra:
    The Framework Within



    Aaron Quint / Quirkey NYC, LLC
                    /

    Ruby Kaigi / July 18, 2...
Brooklyn, New York

Friday, July 31, 2009
Sinatra.




Friday, July 31, 2009
I didn’t write Sinatra,
                                         …
                            I just love it.



Friday, ...
Sinatra.

     require 'sinatra'

     get '/' do
       "Don't you hate pants?"
     end




Friday, July 31, 2009
Sinatra.




Friday, July 31, 2009
Sinatra.


     require 'sinatra'

     get '/homer/hate/:hate' do
       "Don't you hate #{params[:hate]}?"
     end




...
Sinatra.




Friday, July 31, 2009
Sinatra.

     require 'sinatra'

     get '/homer/hate/:hate.json' do
       content_type 'json'
       "{'hate': '#{para...
Classy.




Friday, July 31, 2009
Sinatra. Classy.
     require 'sinatra'
     require 'rack/flash'

     class ClassyApp < Sinatra::Default
       set :ses...
Sinatra. Classy.




Friday, July 31, 2009
Sinatra. Classy.




Friday, July 31, 2009
Sinatra
                             is not
                        a framework.



Friday, July 31, 2009
Framework.




Friday, July 31, 2009
Not a Framework.




Friday, July 31, 2009
Sinatra.




Friday, July 31, 2009
Not MVC.




Friday, July 31, 2009
WDNNSP
                        (We Don’t Need No Stinkin’ Pattern)




Friday, July 31, 2009
Sinatra
                           is a
                        library.



Friday, July 31, 2009
Sinatra as a library.

     ‣A DSL for defining routes.
     ‣                        DSL

     ‣A nicer Rack.
     ‣     ...
Friday, July 31, 2009
Code first.

                        Then Sinatra.
                          Sinatra


Friday, July 31, 2009
My Awesome
                          Ruby Project.

                        Ruby
                                 Includes...
Sinatra!




Friday, July 31, 2009
HTTP as
                           a language.
                        HTTP



Friday, July 31, 2009
Sinatra
                            speaks HTTP.
                        Sinatra HTTP



Friday, July 31, 2009
Do you speak HTTP?
                             HTTP



Friday, July 31, 2009
GET!




Friday, July 31, 2009
RESPONSE!




Friday, July 31, 2009
User        Rack
                        RestClient   Sinatra




Friday, July 31, 2009
Friday, July 31, 2009
The power of
                        the local web.
                               Web



Friday, July 31, 2009
The power of
                         localhost.




Friday, July 31, 2009
Friday, July 31, 2009
Friday, July 31, 2009
CALLING ALL
                        DEVELOPERS!




Friday, July 31, 2009
CALLING ALL
                        DEVELOPERS!
                         require 'sinatra'




Friday, July 31, 2009
CALLING ALL DEVELOPERS!




                        Awesome
                         Codes.




Friday, July 31, 2009
CALLING ALL DEVELOPERS!




                        Sinatra!




Friday, July 31, 2009
CALLING ALL DEVELOPERS!
     require 'sinatra'

     module MyProject
       class App < ::Sinatra::Default

             ...
CALLING ALL DEVELOPERS!




Friday, July 31, 2009
CALLING ALL DEVELOPERS!



                        Sinatra!




Friday, July 31, 2009
require 'sinatra'

   module Gembox


    CALLING ALL DEVELOPERS!
     class App < ::Sinatra::Default
       include Gembo...
Introducing




Friday, July 31, 2009
Super
                          Simple
                              Sinatra
                        Starter.

Friday, Jul...
Vegas

     #!/usr/bin/env ruby

     require File.expand_path(File.dirname(__FILE__) +
                         "/../lib/...
Vegas

     [11:05 PM:~] $ gembox -h
     Usage: gembox [options]

     Vegas       options:
       -s,       --server SER...
Vegas
    $ sudo gem install gembox




Friday, July 31, 2009
Vegas
    $ sudo gem install neerajdotname-javascript_lab




Friday, July 31, 2009
The FUTURE!

    ‣Gems+Vegas as a distribution platform.
    ‣
    ‣Even easier workflow for mounting.
    ‣
    ‣Vegas as...
Thank you!
     Thanks to Sougo Tsuboi, Leonard
      Chin and the other Ruby Kaigi
                Volunteers


Friday, J...
Av
                                                                  ai
                                                  ...
Upcoming SlideShare
Loading in...5
×

Aaron Quint - Ruby Kaigi Presentation

1,217

Published on

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,217
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Aaron Quint - Ruby Kaigi Presentation"

  1. 1. Sinatra: The Framework Within Aaron Quint / Quirkey NYC, LLC / Ruby Kaigi / July 18, 2009 Friday, July 31, 2009
  2. 2. Brooklyn, New York Friday, July 31, 2009
  3. 3. Sinatra. Friday, July 31, 2009
  4. 4. I didn’t write Sinatra, … I just love it. Friday, July 31, 2009
  5. 5. Sinatra. require 'sinatra' get '/' do "Don't you hate pants?" end Friday, July 31, 2009
  6. 6. Sinatra. Friday, July 31, 2009
  7. 7. Sinatra. require 'sinatra' get '/homer/hate/:hate' do "Don't you hate #{params[:hate]}?" end Friday, July 31, 2009
  8. 8. Sinatra. Friday, July 31, 2009
  9. 9. Sinatra. require 'sinatra' get '/homer/hate/:hate.json' do content_type 'json' "{'hate': '#{params[:hate]}'}" end get '/homer/hate/:hate' do "Don't you hate #{params[:hate]}?" end Friday, July 31, 2009
  10. 10. Classy. Friday, July 31, 2009
  11. 11. Sinatra. Classy. require 'sinatra' require 'rack/flash' class ClassyApp < Sinatra::Default set :sessions, true use Rack::Flash get '/' do haml :index end post '/classify' do flash[:message] = 'Your text has been classified.' @text = "I do say, #{params[:text]}. Quite!" haml :classify end end Friday, July 31, 2009
  12. 12. Sinatra. Classy. Friday, July 31, 2009
  13. 13. Sinatra. Classy. Friday, July 31, 2009
  14. 14. Sinatra is not a framework. Friday, July 31, 2009
  15. 15. Framework. Friday, July 31, 2009
  16. 16. Not a Framework. Friday, July 31, 2009
  17. 17. Sinatra. Friday, July 31, 2009
  18. 18. Not MVC. Friday, July 31, 2009
  19. 19. WDNNSP (We Don’t Need No Stinkin’ Pattern) Friday, July 31, 2009
  20. 20. Sinatra is a library. Friday, July 31, 2009
  21. 21. Sinatra as a library. ‣A DSL for defining routes. ‣ DSL ‣A nicer Rack. ‣ Rack Friday, July 31, 2009
  22. 22. Friday, July 31, 2009
  23. 23. Code first. Then Sinatra. Sinatra Friday, July 31, 2009
  24. 24. My Awesome Ruby Project. Ruby Includes Sinatra. Sinatra Friday, July 31, 2009
  25. 25. Sinatra! Friday, July 31, 2009
  26. 26. HTTP as a language. HTTP Friday, July 31, 2009
  27. 27. Sinatra speaks HTTP. Sinatra HTTP Friday, July 31, 2009
  28. 28. Do you speak HTTP? HTTP Friday, July 31, 2009
  29. 29. GET! Friday, July 31, 2009
  30. 30. RESPONSE! Friday, July 31, 2009
  31. 31. User Rack RestClient Sinatra Friday, July 31, 2009
  32. 32. Friday, July 31, 2009
  33. 33. The power of the local web. Web Friday, July 31, 2009
  34. 34. The power of localhost. Friday, July 31, 2009
  35. 35. Friday, July 31, 2009
  36. 36. Friday, July 31, 2009
  37. 37. CALLING ALL DEVELOPERS! Friday, July 31, 2009
  38. 38. CALLING ALL DEVELOPERS! require 'sinatra' Friday, July 31, 2009
  39. 39. CALLING ALL DEVELOPERS! Awesome Codes. Friday, July 31, 2009
  40. 40. CALLING ALL DEVELOPERS! Sinatra! Friday, July 31, 2009
  41. 41. CALLING ALL DEVELOPERS! require 'sinatra' module MyProject class App < ::Sinatra::Default set :root, File.join(File.dirname(__FILE__), '..', '..') set :app_file, __FILE__ #... get '/' do # ... SOMETHING AWESOME end # ... end end Friday, July 31, 2009
  42. 42. CALLING ALL DEVELOPERS! Friday, July 31, 2009
  43. 43. CALLING ALL DEVELOPERS! Sinatra! Friday, July 31, 2009
  44. 44. require 'sinatra' module Gembox CALLING ALL DEVELOPERS! class App < ::Sinatra::Default include Gembox::ViewHelpers include WillPaginate::ViewHelpers @@root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')) set :root, @@root set :app_file, __FILE__ before do Gembox::Gems.load @gems = Gembox::Gems.local_gems.paginate :page => params[:page], :per_page => 30 @stats = Gembox::Gems.stats end #... get '/' do redirect '/gems' end get %r{/gems/doc/([w-_]+)/?([d.]+)?/?(.*)?} do #... end get %r{/gems/([w-_]+)/?([d.]+)?/?} do # ... haml :gem, :layout => show_layout end get '/gems/?' do # ... haml "gems_#{@show_as}".to_sym, :layout => show_layout end Friday, July 31, 2009
  45. 45. Introducing Friday, July 31, 2009
  46. 46. Super Simple Sinatra Starter. Friday, July 31, 2009
  47. 47. Vegas #!/usr/bin/env ruby require File.expand_path(File.dirname(__FILE__) + "/../lib/gembox") require 'vegas' Vegas::Runner.new(Gembox::App, 'gembox') Friday, July 31, 2009
  48. 48. Vegas [11:05 PM:~] $ gembox -h Usage: gembox [options] Vegas options: -s, --server SERVER serve using SERVER (webrick/mongrel) -o, --host HOST listen on HOST (default: 0.0.0.0) -p, --port PORT use PORT (default: 5678) -e, --env ENVIRONMENT use ENVIRONMENT for defaults (default: development) -F, --foreground don't daemonize, run in the foreground -K, --kill kill the running process and exit -S, --status display the current running PID and URL then quit Common options: -h, --help Show this message --version Show version Friday, July 31, 2009
  49. 49. Vegas $ sudo gem install gembox Friday, July 31, 2009
  50. 50. Vegas $ sudo gem install neerajdotname-javascript_lab Friday, July 31, 2009
  51. 51. The FUTURE! ‣Gems+Vegas as a distribution platform. ‣ ‣Even easier workflow for mounting. ‣ ‣Vegas as the central brain. ‣Vegas ‣Distribute tasks across the local network. ‣ Friday, July 31, 2009
  52. 52. Thank you! Thanks to Sougo Tsuboi, Leonard Chin and the other Ruby Kaigi Volunteers Friday, July 31, 2009
  53. 53. Av ai la bl e fo rh ire ! Aaron Quint aaron@quirkey.com http://www.quirkey.com All code available and open source at: http://code.quirkey.com/vegas http://code.quirkey.com/gembox Friday, July 31, 2009
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×