まちゅダイアリー

Ruby 1.9.0 で tDiary を動かしてみる (Ruby1.8.5と共用できるよ)

2007-12-30

前の日記の続き。 1.8/1.9両対応なんて無理ですかねぇ?ってことなので、 1.8.5 と 1.9.0 の両方で動くように頑張ってみた。

いまのところ、日記の表示、日記の更新(tDiary, Wikiスタイル)までできた。 でも、ツッコミを入れるとエラーになったり、キャッシュを消さないと動かなかったりと、まだまだ不安定すぎる。 それに jdate プラグインを入れると動かない。

とりあえず今はここまでだなぁ。

compatible.rb

tDiary で使う範囲で、 1.8と1.9で非互換なメソッドを吸収する compatible.rb を作ってみた。

unless "".respond_to?('to_a')
  class String
    def to_a
      [ self ]
    end
  end
end

unless "".respond_to?('force_encoding')
  class String
    def force_encoding(encoding)
    end
  end
end

unless "".respond_to?('bytesize')
  class String
    alias bytesize size
  end
end

class String
  def method_missing(name, *args, &block)
    each_line.__send__(name, *args, &block)
  end
end

index.rb, update.rb

String#bytesize と String#force_encoding は compatible.rb で定義しているので 1.8 でも OK 。

tdiary.rb

plugin/00default.rb

以下の箇所が EUC-JP だと動かない。とりあえず保留(ダメじゃん)。

if /[\x80-\xff]/

plugin/ja/05referer.rb

エスケープ文字を「\」から「\\」へ変更。