Aaron Quint - Ruby Kaigi Presentation
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Aaron Quint - Ruby Kaigi Presentation

on

  • 2,219 views

 

Statistics

Views

Total Views
2,219
Views on SlideShare
2,218
Embed Views
1

Actions

Likes
2
Downloads
13
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Aaron Quint - Ruby Kaigi Presentation Presentation Transcript

  • 1. Sinatra: The Framework Within Aaron Quint / Quirkey NYC, LLC / Ruby Kaigi / July 18, 2009 Friday, July 31, 2009
  • 2. Brooklyn, New York Friday, July 31, 2009
  • 3. Sinatra. Friday, July 31, 2009
  • 4. I didn’t write Sinatra, … I just love it. Friday, July 31, 2009
  • 5. Sinatra. require 'sinatra' get '/' do "Don't you hate pants?" end Friday, July 31, 2009
  • 6. Sinatra. Friday, July 31, 2009
  • 7. Sinatra. require 'sinatra' get '/homer/hate/:hate' do "Don't you hate #{params[:hate]}?" end Friday, July 31, 2009
  • 8. Sinatra. Friday, July 31, 2009
  • 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. Classy. Friday, July 31, 2009
  • 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. Sinatra. Classy. Friday, July 31, 2009
  • 13. Sinatra. Classy. Friday, July 31, 2009
  • 14. Sinatra is not a framework. Friday, July 31, 2009
  • 15. Framework. Friday, July 31, 2009
  • 16. Not a Framework. Friday, July 31, 2009
  • 17. Sinatra. Friday, July 31, 2009
  • 18. Not MVC. Friday, July 31, 2009
  • 19. WDNNSP (We Don’t Need No Stinkin’ Pattern) Friday, July 31, 2009
  • 20. Sinatra is a library. Friday, July 31, 2009
  • 21. Sinatra as a library. ‣A DSL for defining routes. ‣ DSL ‣A nicer Rack. ‣ Rack Friday, July 31, 2009
  • 22. Friday, July 31, 2009
  • 23. Code first. Then Sinatra. Sinatra Friday, July 31, 2009
  • 24. My Awesome Ruby Project. Ruby Includes Sinatra. Sinatra Friday, July 31, 2009
  • 25. Sinatra! Friday, July 31, 2009
  • 26. HTTP as a language. HTTP Friday, July 31, 2009
  • 27. Sinatra speaks HTTP. Sinatra HTTP Friday, July 31, 2009
  • 28. Do you speak HTTP? HTTP Friday, July 31, 2009
  • 29. GET! Friday, July 31, 2009
  • 30. RESPONSE! Friday, July 31, 2009
  • 31. User Rack RestClient Sinatra Friday, July 31, 2009
  • 32. Friday, July 31, 2009
  • 33. The power of the local web. Web Friday, July 31, 2009
  • 34. The power of localhost. Friday, July 31, 2009
  • 35. Friday, July 31, 2009
  • 36. Friday, July 31, 2009
  • 37. CALLING ALL DEVELOPERS! Friday, July 31, 2009
  • 38. CALLING ALL DEVELOPERS! require 'sinatra' Friday, July 31, 2009
  • 39. CALLING ALL DEVELOPERS! Awesome Codes. Friday, July 31, 2009
  • 40. CALLING ALL DEVELOPERS! Sinatra! Friday, July 31, 2009
  • 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. CALLING ALL DEVELOPERS! Friday, July 31, 2009
  • 43. CALLING ALL DEVELOPERS! Sinatra! Friday, July 31, 2009
  • 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. Introducing Friday, July 31, 2009
  • 46. Super Simple Sinatra Starter. Friday, July 31, 2009
  • 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. 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. Vegas $ sudo gem install gembox Friday, July 31, 2009
  • 50. Vegas $ sudo gem install neerajdotname-javascript_lab Friday, July 31, 2009
  • 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. Thank you! Thanks to Sougo Tsuboi, Leonard Chin and the other Ruby Kaigi Volunteers Friday, July 31, 2009
  • 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