この前 gemoji のアップデートに気づいて Octopress用のプラグインのアップデートをしましたが、 このアップデートではgemoji側の関数などの変更だけに対応しましたが、 実は入ってる絵文字のファイルの名前とか構造が 変わっていて、それに対応してなかったのでやり直しです。
gemoji 2.X以降の変更
gemoji 2.X以降では、
Emoji.find_by_alias(emoji)
という関数を使ってemoji
という文字列がgemojiの中で使えるのかどうか
確かめる、と言う様に変更になった、と言う話をしましたが、
実は、これ以上の変更として、
絵文字のファイルそのものに変更がありました。
上の2つを比べて分かるように、1.5.0まではimages/emoji のディレクトリ直下に、emojiの名前のままのファイルが沢山入っていますが、 2.Xから名前の物はほとんど削除され、images/emoji/unicodeに Unicodeをファイル名にしたものが入ってるだけになっています。
これは1.5.0の時にもありましたが、2.Xからは gemojiのモジュール側で名前を変換してあげて ファイルはUnicode版だけ残す、という様になったみたいです。
octopress-gemojiのアップデート
octopress-gemojiでは、最初にsource/images/emojiに gemojiのパッケージの中からemojiディレクトリの中身をコピーしています。
以前は、emojiの名前を直接使っていたので emojiディレクトリ直下にある名前のファイルだけをコピーしていました。
gemojiをアップデートした際、モジュール内の関数が変わったので octopress-gemojiが動かなくなって、その関数周りを直したのですが、 この時、source/images/emojiはすでに以前インストールしてあって、 これがあるため新たには更新されなかったので 上のファイルの変更には気づきませんでした。
そんな中英語版ブログ の方をいじっていて絵文字を使おうとしたら、 ファイルが無くて表示されずにこれに気づきました。
Unicode版にファイル名を変更しないといけないわけですが、 これはgemojiを使って
emoji = Emoji.find_by_alias(@emoji)
if emoji != nil and emoji_dir
'<img alt="' + @emoji + '" src="' + config['emoji_dir'] + "/" + emoji.image_filename + '" class="emoji" />'
else
@emoji
end
こんな感じでEmoji.find_by_alias(@emoji)
で帰ってくるオブジェクトを使って、
image_filename
を見ることで出来ます。
image_filename
が(smile)の場合には
unicode/1f604.pngだったりします。
この変更に伴って、emojiディレクトリを更新するために 一旦source/images/emojiディレクトリを削除する必要があります。
また、Liquidモジュールのgenerate
で指定する関数は
jekyll build
(Octopressでrake generate
で呼ばれる)の中で
呼ばれますが、
source/images/の中でコピーするもののリストというのは
このgenerate
より前に作成されるらしく、
generate
の中でsource/imagesへ新たにファイルをコピーした場合、
その時のビルドではpublicの方にファイルがコピーされません。
従って、最初にemojiディレクトリがない状態で始める際には、
最低でも1回余計にrake generate
する必要があります。
その際、emojiのファイルを直接/images/emoji/smile.pngみたいに 指定してる箇所がサイト内にある場合、 それらを書き換えないと表示されなくなるので注意です。