rcmdnk's blog

1f604_200_200

この前 gemoji のアップデートに気づいて Octopress用のプラグインのアップデートをしましたが、 このアップデートではgemoji側の関数などの変更だけに対応しましたが、 実は入ってる絵文字のファイルの名前とか構造が 変わっていて、それに対応してなかったのでやり直しです。

Sponsored Links

gemoji 2.X以降の変更

gemoji 2.X以降では、

Emoji.find_by_alias(emoji)

という関数を使ってemojiという文字列がgemojiの中で使えるのかどうか 確かめる、と言う様に変更になった、と言う話をしましたが、 実は、これ以上の変更として、 絵文字のファイルそのものに変更がありました。

gemoji/images/emoji at v1.5.0 · github/gemoji

gemoji/images/emoji at v2.1.0 · github/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_filenamesmile(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みたいに 指定してる箇所がサイト内にある場合、 それらを書き換えないと表示されなくなるので注意です。

Sponsored Links
Sponsored Links

« Homebrew-fileのwrapperをスクリプトから関数に変更 Firefox Syncで通常同期されない個人設定を同期できる様にする方法 »