色々とコード書き換えながら試したいのでローカルにbundle installする。
$ bundle install --path vendor/bundle
これでvendor/bundle
以下にあるgemファイルを書き換えることでライブラリの挙動を変えたりpしながら調べることができる。
コードを読んでいくとxmlにエスケープが入っていないことが分かった。rubyでシンプルなXML escape。なので以下のようにエンコード関数を渡すことで動くようになった。
def entry_xml(title = '', content = '', categories = [], draft = 'no', updated = '', author_name = @user_id) . . xml % [e(title), author_name, e(content), updated, categories_tag, draft] end
足したe()関数はこんな感じ。
def e(str) str.encode(xml: :text) end
うまく行ったぜー、とプルリクエスト送ろうと思ったらkymmt90/hatenablogにあるコードと中身が違う、あれ?よくみるとbundle installで入っているのはhatenablog-0.2.1
だけど最新はhatenablog-0.2.2
であることに気がついた。これはもしかして・・・結局マージリクエストは以下のようになった。
Update hatenablog to 0.2.2 by ongaeshi · Pull Request #2 · kymmt90/hatenablog-writer
これで以下のようなタグ付きのテキストも問題なく投稿できるようになった。
<html> </html>