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.

Beginner's Sinatra

4,196 views

Published on

kanazawa.rb #02 (2012/09/22) の発表資料。Sinatra 概要。

Published in: Technology
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Beginner's Sinatra

  1. 1. Beginner’s Sinatra Minimal Framework in Ruby2012/09/22 - kanazawa.rb #2
  2. 2. Web System Web serverApplication serverDatabase server
  3. 3. Web System Client Web serverApplication serverDatabase server
  4. 4. exampleWeb System ApacheTomcat (java) PostgreSQL
  5. 5. exampleWeb System nginx Rails (Ruby) MySQL
  6. 6. exampleWeb System thinSinatra (Ruby) MySQL
  7. 7. exampleWeb System thinSinatra (Ruby) MySQL
  8. 8. Sinatra
  9. 9. Sinatrahttp://www.sinatrarb.com
  10. 10. Sinatrahttp://www.sinatrarb.com Sinatra is a DSL for quickly creating web applications in Ruby
  11. 11. Sinatrahttp://www.sinatrarb.com Sinatra is a DSL for quickly creating web applications in Ruby
  12. 12. Hello world!$ gem install sinatra$ vi myapp.rb$ ruby myapp.rb
  13. 13. Hello world!$ gem install sinatra$ vi myapp.rb$ ruby myapp.rb
  14. 14. Hello world!require sinatraget / do Hello world!end
  15. 15. Hello world!require sinatraget / do Hello world!end thats all
  16. 16. Hello world!require sinatraget / do Hello world!end
  17. 17. Hello world! require sinatraRequest get / do Hello world! end
  18. 18. Hello world! require sinatraRequest get / do Hello world! end Handling & Response
  19. 19. Hello world!$ gem install sinatra$ vi myapp.rb$ ruby myapp.rb
  20. 20. Hello world!
  21. 21. Hello world!
  22. 22. MVCModelViewController
  23. 23. MVCModelViewController
  24. 24. MVCModelView SinatraController
  25. 25. MVCModelViewController
  26. 26. MVC ActiveRecord DataMapper SequelModelViewController
  27. 27. MVC ActiveRecord DataMapper SequelModelView erbController haml Builder
  28. 28. MVC ActiveRecord DataMapper SequelModelView erbController haml Builder As you like :)
  29. 29. SinatraMinimal “Routing” Framework in Ruby handling responserequest handling response handling response
  30. 30. Routing
  31. 31. How to routing1.HTTP method + URL path2.Conditions3.Filters4.Passing5.Halt & Error
  32. 32. 1. HTTP method + URL pathHTTP method get post put delete
  33. 33. 1. HTTP method + URL pathget / do ...post / do ...put / do ...delete / do ... first match
  34. 34. 1. HTTP method + URL pathURL path pattern regular expressions
  35. 35. 1. HTTP method + URL pathget /path/ do ... # => /path/get /path/:dir/:file do ... # => /path/hoge/fugaget /path/*.* do ... # => /path/hoge.xmlget %r{/path/[w]+} do ... # => /path/hoge first match
  36. 36. 2. Conditionsuser agenthost namemime type (≒HTTP Accept)custom conditions
  37. 37. 2. Conditionsget /, :agent => /MSIE/ do ...get /, :host_name => /^admin./ do ...get /, :provides => :rss do ... first match
  38. 38. 2. Conditionsset(:random) { |val| condition { rand <= val } }get /, :random => 0.2 do ... # => 20%get / do ... # => 80% first match
  39. 39. 3. FiltersBeforeAfter
  40. 40. 3. Filtersbefore /usr/* do ...before / do ...get /usr/* do ...get * do ...after /usr/* do ...after do ... # => after * do ...
  41. 41. 3. Filters /usr/hogebefore /usr/* do ...before / do ...get /usr/* do ...get * do ...after /usr/* do ...after do ... # => after * do ...
  42. 42. 3. Filters /usr/hogebefore /usr/* do ... 1before / do ...get /usr/* do ... 2get * do ...after /usr/* do ... 3after do ... # => after * do ...
  43. 43. 3. Filters /usr/hoge /before /usr/* do ... 1before / do ...get /usr/* do ... 2get * do ...after /usr/* do ... 3after do ... # => after * do ...
  44. 44. 3. Filters /usr/hoge /before /usr/* do ... 1before / do ... 1get /usr/* do ... 2get * do ... 2after /usr/* do ... 3after do ... # => after * do ... 3
  45. 45. 3. Filters /usr/hoge / /fugabefore /usr/* do ... 1before / do ... 1get /usr/* do ... 2get * do ... 2after /usr/* do ... 3after do ... # => after * do ... 3
  46. 46. 3. Filters /usr/hoge / /fugabefore /usr/* do ... 1before / do ... 1get /usr/* do ... 2get * do ... 2 1after /usr/* do ... 3after do ... # => after * do ... 3 2
  47. 47. 4. Passingget * do pass if rand <= 0.2; # xxxendget * do # xxxend first match
  48. 48. 4. Passingget * do pass if rand <= 0.2; # xxxendget * do # xxxend first match
  49. 49. 5. Halt & Errorerror 403 do Access Forbiddenendbefore /secret/* do halt 403 unless authorizedend
  50. 50. 5. Halt & Errorerror 403 do Access Forbiddenendbefore /secret/* do halt 403 unless authorizedend
  51. 51. 5. Halt & Errorerror 404 do File Not Foundendbefore /devel/* do halt xxxend
  52. 52. Request
  53. 53. URL pattern (:xxx)get /path/:dir/:file do # => /path/hoge/fuga params[:dir] # => "hoge" params[:file] # => "fuga"end
  54. 54. URL pattern (*)get /path/*.* do # => /path/hoge/fuga.xml params[:splat] # => [ "hoge/fuga", "xml" ]endget /path/*.* do |path, ext| # => /path/hoge/fuga.xml path # => "hoge/fuga" ext # => "xml"end
  55. 55. URL regular expressionget %r{/path/([w]+)} do # => /path/hoge params[:capture] # => [ "hoge" ]endget %r{/path/([w]+)} do |cap| # => /path/hoge cap # => [ "hoge" ]end
  56. 56. HTTP Get query"/?abc=hoge&def=fuga"get * do params[:abc] # => "hoge" params[:def] # => "fuga"end
  57. 57. HTTP Post data<input name="abc" value="hoge"><input name="def" value="fuga">post * do params[:abc] # => "hoge" params[:def] # => "fuga"end
  58. 58. request objectget * do request.cookies # => cookie hash request.xhr? # => is ajax request (boolean) request.methods # => any more!end
  59. 59. Response
  60. 60. Response type1.Objects2.Template
  61. 61. 1. ObjectStringFixnum (as HTTP Status code)Array [status (Fixnum), response body (responds to #each)] [status (Fixnum), headers (Hash), response body (responds to #each)]
  62. 62. 2. Templatehamlerbbuilder
  63. 63. 2. Templatehamlerbbuildersasscoffee-script
  64. 64. 2. Templateget / do erb :index # => ./views/index.erbend
  65. 65. 2. Templateget / do erb :index # => ./views/index.erbend
  66. 66. 2. Templateget / do erb :index # => ./views/index.erbend config OK
  67. 67. 2. Templateget / do @attr1 = "val1" @attr2 = "val2" erb :indexend<%= @attr1 %><%= @attr2 %>
  68. 68. 2. Templateget / do erb :index, :locals => { :attr1 => "val1", :attr2 => "val2" }end<%= attr1 %><%= attr2 %>
  69. 69. Conclusion
  70. 70. SinatraMinimal routing frameworkfor quickly creating web applications in Rubycan using any templates
  71. 71. Thank youTomokazu Kiyoharahttp://facebook.com/tomokazu.kiyoharahttp://twitter.com/kiyohara

×