Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Our tDiary's policy and strategies to support Ruby 1.9 and our future plan

Eabad423977cfc6873b8f5df62b848a6?s=47 SHIBATA Hiroshi
October 10, 2011
680

Our tDiary's policy and strategies to support Ruby 1.9 and our future plan

Eabad423977cfc6873b8f5df62b848a6?s=128

SHIBATA Hiroshi

October 10, 2011
Tweet

Transcript

  1. tDiary ͷ Ruby1.9 ରԠͷաఔͱ ࠓޙͷϩʔυϚοϓ ࣲా തࢤ (tDiary.org) SHIBATA Hiroshi

    (tDiary.org) Our tDiary's policy and strategies to support Ruby 1.9 and our future plan. 1 2009೥7݄19೔೔༵೔
  2. ࣗݾ঺հ 2 2009೥7݄19೔೔༵೔

  3. • SHIBATA Hiroshi a.k.a hsbt (hsbt.org) • ιϑτ΢ΣΞΤϯδχΞ • 1981೥ੜ·Ε

    ๺ւಓࡏॅ 3 2009೥7݄19೔೔༵೔
  4. RubyͱͷؔΘΓ • ߴઐ4೥ͷ࣌ͷԠ༻਺ֶͰ id:gotoken ͔ Βڭ͑ͯ΋Β͏ • tDiary Λ࢖͍࢝ΊͯओʹWebؔ࿈ͷϥΠ ϒϥϦΛ࢖͍࢝ΊΔ

    4 2009೥7݄19೔೔༵೔
  5. • Administrator of developer team for tDiary.org 5 2009೥7݄19೔೔༵೔

  6. RubyKaigi2009 ςʔϚʮมΘΔ/ม͑Δʯ 6 2009೥7݄19೔೔༵೔

  7. ΑΖ͓͘͠ئ͍͠·͢ɻ 7 2009೥7݄19೔೔༵೔

  8. Agenda • ·ͣ͸͡Ίʹ • tDiary-2.3.2ϦϦʔεܭը(Ruby 1.9 α ϙʔτ) • Ruby

    1.9 ରԠͷৄࡉ • tDiary-2.3.3~ future 8 2009೥7݄19೔೔༵೔
  9. ·ͣ͸͡Ίʹ 9 2009೥7݄19೔೔༵೔

  10. tDiary ࢖ͬͯΔਓ͍·͔͢? 10 2009೥7݄19೔೔༵೔

  11. tDiary 11 2009೥7݄19೔೔༵೔

  12. tDiaryͱݴ͑͹… 12 2009೥7݄19೔೔༵೔

  13. tDiary • feed reader ͰίϝϯτεύϜ͕(ry • tDiaryͷιʔείʔυ͸ಡ·ͳ͍ํ͕(ry • ςετίʔυ͕ͳ͍యܕతϨΨγʔ ίʔ(ry

    13 2009೥7݄19೔೔༵೔
  14. tDiary • Tsukkomi oriented Diary system • before Rails͔Β։ൃܧଓத(25೥ܭը) •

    Rubyͱڞʹ੒௕ • ϨϯλϧαʔόʔʹRubyΛೖΕͤ͞Δ ࡞ઓ 14 2009೥7݄19೔೔༵೔
  15. tDiary͸ Rubyͱڞʹ੒௕ 15 2009೥7݄19೔೔༵೔

  16. 2009/01/30 Ruby 1.9 Release! 16 2009೥7݄19೔೔༵೔

  17. Ruby 1.9 ࢖ͬͯΔਓ͍·͔͢? 17 2009೥7݄19೔೔༵೔

  18. RubyKaigi2009 ςʔϚʮมΘΔ/ม͑Δʯ 18 2009೥7݄19೔೔༵೔

  19. ʮม͑Δʯ tDiary ʹΑΔ Ruby 1.9 ීٴ࡞ઓ 19 2009೥7݄19೔೔༵೔

  20. tDiary ʹΑΔRuby 1.9 ීٴ࡞ઓ • Ruby 1.9͸͍͔ͭ͸࢖Θͳ͚Ε͹ͳΒͳ ͍ • tDiaryΛRuby

    1.9ීٴͷΩϥʔΞϓϦʹ ͢Δ • ͱΓ͋͑ͣಈ͔͘ΒRubyΛ1.9ʹόʔ δϣϯΞοϓͯ͠͠·͏ 20 2009೥7݄19೔೔༵೔
  21. Agenda • ·ͣ͸͡Ίʹ • tDiary-2.3.2ϦϦʔεܭը(Ruby 1.9 αϙʔτ) • Ruby 1.9

    ରԠͷৄࡉ • tDiary-2.3.3~ future 21 2009೥7݄19೔೔༵೔
  22. tDiary-2.3.2ϦϦʔεܭը (Ruby 1.9 αϙʔτ) 22 2009೥7݄19೔೔༵೔

  23. ͱΓ͋͑ͣಈ͔ͯ͠ΈΔ 23 2009೥7݄19೔೔༵೔

  24. orz 24 2009೥7݄19೔೔༵೔

  25. Ͱ΋΍ΔΜͩΑ by kakutani 25 2009೥7݄19೔೔༵೔

  26. ͱΓ͋͑ͣ Կ͔Β࢝Ίͨ΋ͷ͔… 26 2009೥7݄19೔೔༵೔

  27. ·ͣ͸ܭը 27 2009೥7݄19೔೔༵೔

  28. 2008೥12݄ ਆಸ઒ݝ๭ॴ 28 2009೥7݄19೔೔༵೔

  29. ࡞ઓձٞ 29 2009೥7݄19೔೔༵೔

  30. Ruby 1.9 ͰͷओͳରԠ •աڈόʔδϣϯͱͷඇޓ ׵෦෼ •จࣈΤϯίʔσΟϯάͷ มߋ 30 2009೥7݄19೔೔༵೔

  31. Ruby 1.9 ରԠܭը •1.8ͱ1.9ʹଘࡏ͢Δ༷ʑͳඇ ޓ׵ΛͲ͏͢Δ͔ •magic comment ΛͲ͏͢Δ͔ 31 2009೥7݄19೔೔༵೔

  32. Ruby 1.9ରԠܭը •ruby ࣮ߦ࣌ͷ --encodingͲ ͏͢Δ͔ •ΤϯίʔσΟϯάपΓͷ ࡉ͔͍मਖ਼Ͳ͏͢Δ͔ 32 2009೥7݄19೔೔༵೔

  33. Agenda • ·ͣ͸͡Ίʹ • tDiary-2.3.2ϦϦʔεܭը(Ruby 1.9 αϙʔτ) • Ruby 1.9

    ରԠͷৄࡉ • tDiary-2.3.3~ future 33 2009೥7݄19೔೔༵೔
  34. Ruby 1.9 ରԠͷৄࡉ 34 2009೥7݄19೔೔༵೔

  35. ͦͷ1 ޓ׵ੑରԠ (core/misc/lib/compatible.rb) 35 2009೥7݄19೔೔༵೔

  36. compatible.rb • ϓϩτλΠϓ͸ machu ͞Μ͕࡞੒ • 1.8ͱ1.9ͱͷඇޓ׵Λٵऩ • for 1.9:

    String.each_line, String.to_a ... • for 1.8: String.force_encoding, String.bytesize ... 36 2009೥7݄19೔೔༵೔
  37. ͦͷ2 ϚδίϝΔ (magic comment ru) 37 2009೥7݄19೔೔༵೔

  38. ϚδίϝΔ •*.rb ͷ1ߦ໨ʹจࣈΤϯίʔ σΟϯάΛ໌ࣔ •shebang ͕࢖ΘΕ͍ͯΔ΋ͷ ͸2ߦ໨ 38 2009೥7݄19೔೔༵೔

  39. ͓୊ 1ߦ໨ʹ೚ҙͷจࣈྻΛૠ ೖ͢ΔϫϯϥΠφʔΛॻ ͖ͳ͍͞ 39 2009೥7݄19೔೔༵೔

  40. gsed -i "1s/.*/# -\*- coding: utf-8; -\*-\n&/" **/*.rb sed Λ࢖͏Μͩ!

    40 2009೥7݄19೔೔༵೔
  41. ͦͷ3 ruby --encoding=utf-8 41 2009೥7݄19೔೔༵೔

  42. ruby --encoding=utf-8 • ruby ࣮ߦ࣌ʹ --encoding ΦϓγϣϯΛ͚ͭ Δ͜ͱͰΤϯίʔσΟϯάΛڧ੍Ͱ͖Δ • tDiaryͷ৔߹ͩͱindex.rb΍update.rbͷ

    shebangʹ௥Ճ • Ϣʔβʔʹ༏͘͠ແ͍ͷͰҙࣝ͠ͳͯ͘ ΋ಈ͘Α͏ʹ͢Δ 42 2009೥7݄19೔೔༵೔
  43. ͦͷ4 ֎෦ΤϯίʔσΟϯάͷࢦఆ 43 2009೥7݄19೔೔༵೔

  44. ֎෦ΤϯίʔσΟϯάͷࢦఆ •࠷ॳ͸open( file, ‘r:utf-8’) Λ ࢖͍ͬͯͨ •Ruby 1.8.6 ͩͱ࢖͑ͳ͍ٕ •٫Լ

    44 2009೥7݄19೔೔༵೔
  45. Encoding::default_external = ‘UTF-8’ default_externalΛ࢖͏Μͩ! 45 2009೥7݄19೔೔༵೔

  46. ؔ܎ऀ࿈བྷ RUBY_VERSION͸࢖Θͳ͍ 46 2009೥7݄19೔೔༵೔

  47. ͦͷଞ ࡉ͔͍मਖ਼ 47 2009೥7݄19೔೔༵೔

  48. ࡉ͔͍मਖ਼ • cgi.cookies ͕ ASCII-8BIT ͱೝࣝ͞ΕΔͷͰ encodingΛݸผʹࢦఆ͢Δ • ϒϩοΫΛ͚ͭͳ͍ map

    ͸ Enumerator Λฦ ͢Α͏ʹͳͬͨͷͰ to_a ͢Δ • get ͷୈೋҾ਺͕ nil ڐ༰͠ͳ͘ͳͬͨͷͰ ԿΒ͔ͷ஋Λࢦఆ 48 2009೥7݄19೔೔༵೔
  49. ͜͜·ͰରԠ͢Δͱ… 49 2009೥7݄19೔೔༵೔

  50. ͻͱ·ͣಈ࡞֬ೝ׬ྃ 50 2009೥7݄19೔೔༵೔

  51. ͱ͜Ζ͕… 51 2009೥7݄19೔೔༵೔

  52. eval࣮ߦ࣌ʹSecurityError 52 2009೥7݄19೔೔༵೔

  53. eval࣮ߦ࣌ʹSecurityError 53 2009೥7݄19೔೔༵೔

  54. [BUG]ͩͬͨ • $SAFE= 1ͷ࣌ͷevalʹ[BUG] • ௚Δ·Ͱ͜Μͳײ͡ͰରԠ 54 2009೥7݄19೔೔༵೔

  55. ruby-1.9.1p129 Ͱ bug fix 55 2009೥7݄19೔೔༵೔

  56. ࿝ࢣᐌ͘ • Ruby ͷ [BUG] Λ౿ΜͩΒتͼͳ͍͞ • Ruby ͷ [BUG]

    Λ౿ΉΑ͏ʹͳ͔ͬͯ ΒҰਓલͷΞϓϦέʔγϣϯ • ͨͩͷϨΨ(ry 56 2009೥7݄19೔೔༵೔
  57. 2009/05/08 tDiary-2.3.2 ϦϦʔε 57 2009೥7݄19೔೔༵೔

  58. ΊͰͨ͠ΊͰͨ͠ 58 2009೥7݄19೔೔༵೔

  59. hsbt.org 59 2009೥7݄19೔೔༵೔

  60. Agenda • ·ͣ͸͡Ίʹ • tDiary-2.3.2ϦϦʔεܭը(Ruby 1.9 αϙʔτ) • Ruby 1.9

    ରԠͷৄࡉ • tDiary-2.3.3~ future 60 2009೥7݄19೔೔༵೔
  61. ʮมΘΔʯ tDiary-2.3.3~ future 61 2009೥7݄19೔೔༵೔

  62. tDiary-2.3.3~ future • testing frameworkͷ࠾༻ • rspec • cucumber •

    CGI͔ΒRack΁ͷࡌͤସ͑ • ػೳ௥Ճͱෆ۩߹मਖ਼ 62 2009೥7݄19೔೔༵೔
  63. testing framework • ࿝ࢣ(ϚΠέϧɾCɾϑΣβʔζ)ᐌ͘: • ࣗ৴Λ࣋ͬͯมߋ͕Ͱ͖ͳ͍ • ೩ྉ: rspecͱcucumber ʮςετ͕ແ͍ίʔυ͸ϨΨγʔίʔυʯ

    63 2009೥7݄19೔೔༵೔
  64. rspec •pluginͷڍಈΛςετ •contribͷ੒ՌΛcoreʹϚʔ δ༧ఆ 64 2009೥7݄19೔೔༵೔

  65. cucumber •γφϦΦΛςετ •testable_tdiary ͷ੒ՌΛϚʔ δࡁ 65 2009೥7݄19೔೔༵೔

  66. testable_tdiary!! 66 2009೥7݄19೔೔༵೔

  67. ͓͞Β͍ 67 2009೥7݄19೔೔༵೔

  68. SapporoRubyKaigi01 68 2009೥7݄19೔೔༵೔

  69. ৄ͘͠͸… • ࡳຈtDiaryձٞ01ͷ֯୩͞Μͷεϥ ΠυΛࢀর • http://kakutani.com/20081025.html#p01 69 2009೥7݄19೔೔༵೔

  70. testable_tdiary ͷϚʔδ 70 2009೥7݄19೔೔༵೔

  71. githubͰ࡞ۀத http://github.com/hsbt/tdiary/tree/testable_merge 71 2009೥7݄19೔೔༵೔

  72. ࡞ۀεςʔλε •script/server (pure webrick) •rackup -s webrick tdiary.ru •cucumber -l

    ja features •Ұ෦ͷγφϦΦͷΈಈ͘ 72 2009೥7݄19೔೔༵೔
  73. tDiaryձٞใࠂ 73 2009೥7݄19೔೔༵೔

  74. ເͷ͋Δੈք tDiary cgi.rb webrick rack cgi.rb webrick passenger 74 2009೥7݄19೔೔༵೔

  75. Ϣʔβʔ/ίϛολͷ੠ • cacheϑΥϧμʹcache͡Όͳ͍σʔλ͕ ͋Δ • XMLRPC͕ಈ͔ͳ͍··์ஔ͞Ε͍ͯΔ • mod_rubyո͍͔͠ΒfcgiΛऔΓࠐΈ͍ͨ • Ruby

    1.9 Ͱಈ͔͢ͱඍົʹ஗͍ 75 2009೥7݄19೔೔༵೔
  76. ๻ΒͷಓͷΓ͸ ·ͩ·ͩ௕͍ 76 2009೥7݄19೔೔༵೔

  77. ·ͱΊ 77 2009೥7݄19೔೔༵೔

  78. ·ͱΊ • tDiary͸Rubyͱڞʹ੒௕͍ͯ͠·͢ • ʮม͑Δʯ: tDiary͕Ruby1.9ʹରԠͨ͠ ͷͰօ͞Μ࢖͍·͠ΐ͏ • ʮมΘΔʯ: tDiary͸2.3.3ͰϨΨγʔ

    ίʔυ͔Βଔۀ͠·͢ 78 2009೥7݄19೔೔༵೔
  79. ͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ 79 2009೥7݄19೔೔༵೔

  80. Q&A 80 2009೥7݄19೔೔༵೔