ruby を 1.9.3-p374 に上げたり、jekyll を 0.12.0 に上げたりしていたら、 jekyll-experiment がタイトルのようなエラーを吐くようになってしまった。
とりあえずのモンキーパッチを当てる方法。
エラーの内容
escape
メソッドで gsub
が未定義だということ。
/Users/****/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/uri/common.rb:304:in `escape': undefined method `gsub' for ["Ruby", "jekyll/hyde"]:Array (NoMethodError)
from /Users/****/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/uri/common.rb:638:in `escape'
from /Users/****/.rvm/gems/ruby-1.9.3-p374/gems/jekyll-0.12.0/lib/jekyll/post.rb:140:in `block in url'
...
common.rb
の該当箇所は、
str.gsub(unsafe) do
post.rb
の該当箇所は、
"categories" => categories.map { |c| URI.escape(c) }.join('/'),
どうやら、categories
に配列 ["Ruby", "jekyll/hyde"]
を指定しているの原因。
モンキーパッチ
URI.escape(c)
の c
を明示的に String
に変換する。
"categories" => categories.map { |c| URI.escape(c.to_s) }.join('/'),
う〜ん、これでいいのかなぁ(いいわけない!)。カテゴリのアーカイブを作る時に Ruby/jekyll/hyde
になるように、ちゃんと考えなきゃ…。