Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Our tDiary's policy and strategies to support R...
Search
SHIBATA Hiroshi
October 10, 2011
0
1k
Our tDiary's policy and strategies to support Ruby 1.9 and our future plan
SHIBATA Hiroshi
October 10, 2011
Tweet
Share
More Decks by SHIBATA Hiroshi
See All by SHIBATA Hiroshi
How to make faster release cycle of Ruby?
hsbt
2
6.1k
Ruby の開発を支えるエコシステム
hsbt
4
2.4k
Why is building the Ruby environment hard?
hsbt
6
8.2k
開発環境へのこだわり
hsbt
16
12k
OSS ことはじめ
hsbt
5
1.5k
GMO DevNight 05 在宅勤務開始から2ヶ月でやったこと
hsbt
2
590
Development Environment 2019
hsbt
1
370
How to become the Psychic
hsbt
0
2.1k
Software Development
hsbt
1
6.7k
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.4k
Claude Code のすすめ
schroneko
67
220k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
86
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Optimizing for Happiness
mojombo
378
71k
First, design no harm
axbom
PRO
2
1.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
A better future with KSS
kneath
240
18k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
110
Transcript
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 20097݄19༵
ࣗݾհ 2 20097݄19༵
• SHIBATA Hiroshi a.k.a hsbt (hsbt.org) • ιϑτΣΞΤϯδχΞ • 1981ੜ·Ε
ւಓࡏॅ 3 20097݄19༵
RubyͱͷؔΘΓ • ߴઐ4ͷ࣌ͷԠ༻ֶͰ id:gotoken ͔ Βڭ͑ͯΒ͏ • tDiary Λ͍࢝ΊͯओʹWebؔ࿈ͷϥΠ ϒϥϦΛ͍࢝ΊΔ
4 20097݄19༵
• Administrator of developer team for tDiary.org 5 20097݄19༵
RubyKaigi2009 ςʔϚʮมΘΔ/ม͑Δʯ 6 20097݄19༵
ΑΖ͓͘͠ئ͍͠·͢ɻ 7 20097݄19༵
Agenda • ·ͣ͡Ίʹ • tDiary-2.3.2ϦϦʔεܭը(Ruby 1.9 α ϙʔτ) • Ruby
1.9 ରԠͷৄࡉ • tDiary-2.3.3~ future 8 20097݄19༵
·ͣ͡Ίʹ 9 20097݄19༵
tDiary ͬͯΔਓ͍·͔͢? 10 20097݄19༵
tDiary 11 20097݄19༵
tDiaryͱݴ͑… 12 20097݄19༵
tDiary • feed reader ͰίϝϯτεύϜ͕(ry • tDiaryͷιʔείʔυಡ·ͳ͍ํ͕(ry • ςετίʔυ͕ͳ͍యܕతϨΨγʔ ίʔ(ry
13 20097݄19༵
tDiary • Tsukkomi oriented Diary system • before Rails͔Β։ൃܧଓத(25ܭը) •
Rubyͱڞʹ • ϨϯλϧαʔόʔʹRubyΛೖΕͤ͞Δ ࡞ઓ 14 20097݄19༵
tDiary Rubyͱڞʹ 15 20097݄19༵
2009/01/30 Ruby 1.9 Release! 16 20097݄19༵
Ruby 1.9 ͬͯΔਓ͍·͔͢? 17 20097݄19༵
RubyKaigi2009 ςʔϚʮมΘΔ/ม͑Δʯ 18 20097݄19༵
ʮม͑Δʯ tDiary ʹΑΔ Ruby 1.9 ීٴ࡞ઓ 19 20097݄19༵
tDiary ʹΑΔRuby 1.9 ීٴ࡞ઓ • Ruby 1.9͍͔ͭΘͳ͚ΕͳΒͳ ͍ • tDiaryΛRuby
1.9ීٴͷΩϥʔΞϓϦʹ ͢Δ • ͱΓ͋͑ͣಈ͔͘ΒRubyΛ1.9ʹόʔ δϣϯΞοϓͯ͠͠·͏ 20 20097݄19༵
Agenda • ·ͣ͡Ίʹ • tDiary-2.3.2ϦϦʔεܭը(Ruby 1.9 αϙʔτ) • Ruby 1.9
ରԠͷৄࡉ • tDiary-2.3.3~ future 21 20097݄19༵
tDiary-2.3.2ϦϦʔεܭը (Ruby 1.9 αϙʔτ) 22 20097݄19༵
ͱΓ͋͑ͣಈ͔ͯ͠ΈΔ 23 20097݄19༵
orz 24 20097݄19༵
ͰΔΜͩΑ by kakutani 25 20097݄19༵
ͱΓ͋͑ͣ Կ͔Β࢝Ίͨͷ͔… 26 20097݄19༵
·ͣܭը 27 20097݄19༵
200812݄ ਆಸݝॴ 28 20097݄19༵
࡞ઓձٞ 29 20097݄19༵
Ruby 1.9 ͰͷओͳରԠ •աڈόʔδϣϯͱͷඇޓ ෦ •จࣈΤϯίʔσΟϯάͷ มߋ 30 20097݄19༵
Ruby 1.9 ରԠܭը •1.8ͱ1.9ʹଘࡏ͢Δ༷ʑͳඇ ޓΛͲ͏͢Δ͔ •magic comment ΛͲ͏͢Δ͔ 31 20097݄19༵
Ruby 1.9ରԠܭը •ruby ࣮ߦ࣌ͷ --encodingͲ ͏͢Δ͔ •ΤϯίʔσΟϯάपΓͷ ࡉ͔͍मਖ਼Ͳ͏͢Δ͔ 32 20097݄19༵
Agenda • ·ͣ͡Ίʹ • tDiary-2.3.2ϦϦʔεܭը(Ruby 1.9 αϙʔτ) • Ruby 1.9
ରԠͷৄࡉ • tDiary-2.3.3~ future 33 20097݄19༵
Ruby 1.9 ରԠͷৄࡉ 34 20097݄19༵
ͦͷ1 ޓੑରԠ (core/misc/lib/compatible.rb) 35 20097݄19༵
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 20097݄19༵
ͦͷ2 ϚδίϝΔ (magic comment ru) 37 20097݄19༵
ϚδίϝΔ •*.rb ͷ1ߦʹจࣈΤϯίʔ σΟϯάΛ໌ࣔ •shebang ͕ΘΕ͍ͯΔͷ 2ߦ 38 20097݄19༵
͓ 1ߦʹҙͷจࣈྻΛૠ ೖ͢ΔϫϯϥΠφʔΛॻ ͖ͳ͍͞ 39 20097݄19༵
gsed -i "1s/.*/# -\*- coding: utf-8; -\*-\n&/" **/*.rb sed Λ͏Μͩ!
40 20097݄19༵
ͦͷ3 ruby --encoding=utf-8 41 20097݄19༵
ruby --encoding=utf-8 • ruby ࣮ߦ࣌ʹ --encoding ΦϓγϣϯΛ͚ͭ Δ͜ͱͰΤϯίʔσΟϯάΛڧ੍Ͱ͖Δ • tDiaryͷ߹ͩͱindex.rbupdate.rbͷ
shebangʹՃ • Ϣʔβʔʹ༏͘͠ແ͍ͷͰҙࣝ͠ͳͯ͘ ಈ͘Α͏ʹ͢Δ 42 20097݄19༵
ͦͷ4 ֎෦ΤϯίʔσΟϯάͷࢦఆ 43 20097݄19༵
֎෦ΤϯίʔσΟϯάͷࢦఆ •࠷ॳopen( file, ‘r:utf-8’) Λ ͍ͬͯͨ •Ruby 1.8.6 ͩͱ͑ͳ͍ٕ •٫Լ
44 20097݄19༵
Encoding::default_external = ‘UTF-8’ default_externalΛ͏Μͩ! 45 20097݄19༵
ؔऀ࿈བྷ RUBY_VERSIONΘͳ͍ 46 20097݄19༵
ͦͷଞ ࡉ͔͍मਖ਼ 47 20097݄19༵
ࡉ͔͍मਖ਼ • cgi.cookies ͕ ASCII-8BIT ͱೝࣝ͞ΕΔͷͰ encodingΛݸผʹࢦఆ͢Δ • ϒϩοΫΛ͚ͭͳ͍ map
Enumerator Λฦ ͢Α͏ʹͳͬͨͷͰ to_a ͢Δ • get ͷୈೋҾ͕ nil ڐ༰͠ͳ͘ͳͬͨͷͰ ԿΒ͔ͷΛࢦఆ 48 20097݄19༵
͜͜·ͰରԠ͢Δͱ… 49 20097݄19༵
ͻͱ·ͣಈ࡞֬ೝྃ 50 20097݄19༵
ͱ͜Ζ͕… 51 20097݄19༵
eval࣮ߦ࣌ʹSecurityError 52 20097݄19༵
eval࣮ߦ࣌ʹSecurityError 53 20097݄19༵
[BUG]ͩͬͨ • $SAFE= 1ͷ࣌ͷevalʹ[BUG] • Δ·Ͱ͜Μͳײ͡ͰରԠ 54 20097݄19༵
ruby-1.9.1p129 Ͱ bug fix 55 20097݄19༵
ࢣᐌ͘ • Ruby ͷ [BUG] Λ౿ΜͩΒتͼͳ͍͞ • Ruby ͷ [BUG]
Λ౿ΉΑ͏ʹͳ͔ͬͯ ΒҰਓલͷΞϓϦέʔγϣϯ • ͨͩͷϨΨ(ry 56 20097݄19༵
2009/05/08 tDiary-2.3.2 ϦϦʔε 57 20097݄19༵
ΊͰͨ͠ΊͰͨ͠ 58 20097݄19༵
hsbt.org 59 20097݄19༵
Agenda • ·ͣ͡Ίʹ • tDiary-2.3.2ϦϦʔεܭը(Ruby 1.9 αϙʔτ) • Ruby 1.9
ରԠͷৄࡉ • tDiary-2.3.3~ future 60 20097݄19༵
ʮมΘΔʯ tDiary-2.3.3~ future 61 20097݄19༵
tDiary-2.3.3~ future • testing frameworkͷ࠾༻ • rspec • cucumber •
CGI͔ΒRackͷࡌͤସ͑ • ػೳՃͱෆ۩߹मਖ਼ 62 20097݄19༵
testing framework • ࢣ(ϚΠέϧɾCɾϑΣβʔζ)ᐌ͘: • ࣗ৴Λ࣋ͬͯมߋ͕Ͱ͖ͳ͍ • ೩ྉ: rspecͱcucumber ʮςετ͕ແ͍ίʔυϨΨγʔίʔυʯ
63 20097݄19༵
rspec •pluginͷڍಈΛςετ •contribͷՌΛcoreʹϚʔ δ༧ఆ 64 20097݄19༵
cucumber •γφϦΦΛςετ •testable_tdiary ͷՌΛϚʔ δࡁ 65 20097݄19༵
testable_tdiary!! 66 20097݄19༵
͓͞Β͍ 67 20097݄19༵
SapporoRubyKaigi01 68 20097݄19༵
ৄ͘͠… • ࡳຈtDiaryձٞ01ͷ֯୩͞Μͷεϥ ΠυΛࢀর • http://kakutani.com/20081025.html#p01 69 20097݄19༵
testable_tdiary ͷϚʔδ 70 20097݄19༵
githubͰ࡞ۀத http://github.com/hsbt/tdiary/tree/testable_merge 71 20097݄19༵
࡞ۀεςʔλε •script/server (pure webrick) •rackup -s webrick tdiary.ru •cucumber -l
ja features •Ұ෦ͷγφϦΦͷΈಈ͘ 72 20097݄19༵
tDiaryձٞใࠂ 73 20097݄19༵
ເͷ͋Δੈք tDiary cgi.rb webrick rack cgi.rb webrick passenger 74 20097݄19༵
Ϣʔβʔ/ίϛολͷ • cacheϑΥϧμʹcache͡Όͳ͍σʔλ͕ ͋Δ • XMLRPC͕ಈ͔ͳ͍··์ஔ͞Ε͍ͯΔ • mod_rubyո͍͔͠ΒfcgiΛऔΓࠐΈ͍ͨ • Ruby
1.9 Ͱಈ͔͢ͱඍົʹ͍ 75 20097݄19༵
ΒͷಓͷΓ ·ͩ·͍ͩ 76 20097݄19༵
·ͱΊ 77 20097݄19༵
·ͱΊ • tDiaryRubyͱڞʹ͍ͯ͠·͢ • ʮม͑Δʯ: tDiary͕Ruby1.9ʹରԠͨ͠ ͷͰօ͞Μ͍·͠ΐ͏ • ʮมΘΔʯ: tDiary2.3.3ͰϨΨγʔ
ίʔυ͔Βଔۀ͠·͢ 78 20097݄19༵
͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ 79 20097݄19༵
Q&A 80 20097݄19༵