rubykaigi2009 presentation slide

Post on 15-May-2015

1.919 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

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.

12009年7月19日日曜日

自己紹介

22009年7月19日日曜日

• SHIBATA Hiroshi a.k.a hsbt (hsbt.org)

• ソフトウェアエンジニア

• 1981年生まれ 北海道在住

32009年7月19日日曜日

Rubyとの関わり

• 高専4年の時の応用数学で id:gotoken から教えてもらう

• tDiary を使い始めて主にWeb関連のライブラリを使い始める

42009年7月19日日曜日

• Administrator of developer team for tDiary.org

52009年7月19日日曜日

RubyKaigi2009テーマ「変わる/変える」

62009年7月19日日曜日

よろしくお願いします。

72009年7月19日日曜日

Agenda

• まずはじめに

• tDiary-2.3.2リリース計画(Ruby 1.9 サポート)

• Ruby 1.9 対応の詳細

• tDiary-2.3.3~ future

82009年7月19日日曜日

まずはじめに

92009年7月19日日曜日

tDiary使ってる人いますか?

102009年7月19日日曜日

tDiary

112009年7月19日日曜日

tDiaryと言えば…

122009年7月19日日曜日

tDiary

• feed reader でコメントスパムが(ry

• tDiaryのソースコードは読まない方が(ry

• テストコードがない典型的レガシーコー(ry

132009年7月19日日曜日

tDiary

• Tsukkomi oriented Diary system

• before Railsから開発継続中(25年計画)

• Rubyと共に成長

• レンタルサーバーにRubyを入れさせる作戦

142009年7月19日日曜日

tDiaryはRubyと共に成長

152009年7月19日日曜日

2009/01/30Ruby 1.9 Release!

162009年7月19日日曜日

Ruby 1.9使ってる人いますか?

172009年7月19日日曜日

RubyKaigi2009テーマ「変わる/変える」

182009年7月19日日曜日

「変える」tDiary による Ruby

1.9 普及作戦

192009年7月19日日曜日

tDiary によるRuby 1.9 普及作戦

• Ruby 1.9はいつかは使わなければならない

• tDiaryをRuby 1.9普及のキラーアプリにする

• とりあえず動くからRubyを1.9にバージョンアップしてしまう

202009年7月19日日曜日

Agenda

• まずはじめに

• tDiary-2.3.2リリース計画(Ruby 1.9 サポート)

• Ruby 1.9 対応の詳細

• tDiary-2.3.3~ future

212009年7月19日日曜日

tDiary-2.3.2リリース計画

(Ruby 1.9 サポート)

222009年7月19日日曜日

とりあえず動かしてみる

232009年7月19日日曜日

orz242009年7月19日日曜日

でもやるんだよby kakutani

252009年7月19日日曜日

とりあえず何から始めたものか…

262009年7月19日日曜日

まずは計画272009年7月19日日曜日

2008年12月神奈川県某所

282009年7月19日日曜日

作戦会議292009年7月19日日曜日

Ruby 1.9 での主な対応

•過去バージョンとの非互換部分

•文字エンコーディングの変更

302009年7月19日日曜日

Ruby 1.9 対応計画

•1.8と1.9に存在する様々な非互換をどうするか

•magic comment をどうするか

312009年7月19日日曜日

Ruby 1.9対応計画

•ruby 実行時の --encodingどうするか

•エンコーディング周りの細かい修正どうするか

322009年7月19日日曜日

Agenda

• まずはじめに

• tDiary-2.3.2リリース計画(Ruby 1.9 サポート)

• Ruby 1.9 対応の詳細

• tDiary-2.3.3~ future

332009年7月19日日曜日

Ruby 1.9 対応の詳細

342009年7月19日日曜日

その1

互換性対応(core/misc/lib/compatible.rb)

352009年7月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 ...

362009年7月19日日曜日

その2

マジコメる(magic comment ru)

372009年7月19日日曜日

マジコメる

•*.rb の1行目に文字エンコーディングを明示

•shebang が使われているものは2行目

382009年7月19日日曜日

お題

1行目に任意の文字列を挿入するワンライナーを書きなさい

392009年7月19日日曜日

gsed -i "1s/.*/# -\*- coding: utf-8; -\*-\n&/" **/*.rb

sed を使うんだ!

402009年7月19日日曜日

その3

ruby --encoding=utf-8

412009年7月19日日曜日

ruby --encoding=utf-8

• ruby 実行時に --encoding オプションをつけることでエンコーディングを強制できる

• tDiaryの場合だとindex.rbやupdate.rbのshebangに追加

• ユーザーに優しく無いので意識しなくても動くようにする

422009年7月19日日曜日

その4

外部エンコーディングの指定

432009年7月19日日曜日

外部エンコーディングの指定

•最初はopen( file, ‘r:utf-8’) を使っていた

•Ruby 1.8.6 だと使えない技

•却下442009年7月19日日曜日

Encoding::default_external = ‘UTF-8’

default_externalを使うんだ!

452009年7月19日日曜日

関係者連絡

RUBY_VERSIONは使わない

462009年7月19日日曜日

その他細かい修正

472009年7月19日日曜日

細かい修正• cgi.cookies が ASCII-8BIT と認識されるので

encodingを個別に指定する

• ブロックをつけない map は Enumerator を返すようになったので to_a する

• get の第二引数が nil 許容しなくなったので何らかの値を指定

482009年7月19日日曜日

ここまで対応すると…

492009年7月19日日曜日

ひとまず動作確認完了

502009年7月19日日曜日

ところが…

512009年7月19日日曜日

eval実行時にSecurityError

522009年7月19日日曜日

eval実行時にSecurityError

532009年7月19日日曜日

[BUG]だった• $SAFE= 1の時のevalに[BUG]

• 直るまでこんな感じで対応

542009年7月19日日曜日

ruby-1.9.1p129 で bug fix

552009年7月19日日曜日

老師曰く• Ruby の [BUG] を踏んだら喜びなさい

• Ruby の [BUG] を踏むようになってから一人前のアプリケーション

• ただのレガ(ry

562009年7月19日日曜日

2009/05/08tDiary-2.3.2 リリース

572009年7月19日日曜日

めでたしめでたし

582009年7月19日日曜日

hsbt.org

592009年7月19日日曜日

Agenda

• まずはじめに

• tDiary-2.3.2リリース計画(Ruby 1.9 サポート)

• Ruby 1.9 対応の詳細

• tDiary-2.3.3~ future

602009年7月19日日曜日

「変わる」tDiary-2.3.3~ future

612009年7月19日日曜日

tDiary-2.3.3~ future

• testing frameworkの採用

• rspec

• cucumber

• CGIからRackへの載せ替え

• 機能追加と不具合修正

622009年7月19日日曜日

testing framework

• 老師(マイケル・C・フェザーズ)曰く:

• 自信を持って変更ができない• 燃料: rspecとcucumber

「テストが無いコードはレガシーコード」

632009年7月19日日曜日

rspec

•pluginの挙動をテスト

•contribの成果をcoreにマージ予定

642009年7月19日日曜日

cucumber

•シナリオをテスト•testable_tdiary の成果をマージ済

652009年7月19日日曜日

testable_tdiary!!

662009年7月19日日曜日

おさらい

672009年7月19日日曜日

SapporoRubyKaigi01

682009年7月19日日曜日

詳しくは…

• 札幌tDiary会議01の角谷さんのスライドを参照

• http://kakutani.com/20081025.html#p01

692009年7月19日日曜日

testable_tdiary のマージ

702009年7月19日日曜日

githubで作業中

http://github.com/hsbt/tdiary/tree/testable_merge

712009年7月19日日曜日

作業ステータス

•script/server (pure webrick)

•rackup -s webrick tdiary.ru

•cucumber -l ja features

•一部のシナリオのみ動く

722009年7月19日日曜日

tDiary会議報告

732009年7月19日日曜日

夢のある世界tDiary cgi.rb

webrick

rack

cgi.rb

webrick

passenger

742009年7月19日日曜日

ユーザー/コミッタの声• cacheフォルダにcacheじゃないデータがある

• XMLRPCが動かないまま放置されている

• mod_ruby怪しいからfcgiを取り込みたい

• Ruby 1.9 で動かすと微妙に遅い

752009年7月19日日曜日

僕らの道のりはまだまだ長い

762009年7月19日日曜日

まとめ

772009年7月19日日曜日

まとめ• tDiaryはRubyと共に成長しています

• 「変える」: tDiaryがRuby1.9に対応したので皆さん使いましょう

• 「変わる」: tDiaryは2.3.3でレガシーコードから卒業します

782009年7月19日日曜日

ご静聴ありがとうございました

792009年7月19日日曜日

Q&A

802009年7月19日日曜日

top related