Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Aaron Quint - Ruby Kaigi Presentation

1,703 views

Published on

Published in: Technology, Education
  • Be the first to comment

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

×