序
前も気づいてはいたところだけど、Chenomi MyPageでカテゴリーがnullになってしまうという問題があった。
以前はこのせいでそもそも表示ができないという問題で、一旦回避策をとってリビルドしたら直ったのでそのままにしていたけれど、問題が再発しているのを発見したので本格的に修正することにした。
問題の調査
調べたところ、どうも最後に更新されたものはcategory_specを持っているけれど、そうでないものが失っているという感じだった。
category_specはPureBuiler Simplyのblessingを使って設定されているものなので、blessingで設定したものを失っているのではないかということになる。
だがそれだと関連記事なども失うのでもっと大事になっているのでは?
という疑念があった。
実際にindexファイルを見た結果としては、本当にblessingで設定した内容を失っていた。 処理していないファイルのindexを更新しているという認識がなかったので、ちょっと戸惑った。
そして調べた結果としては、ドキュメントのfrontmatterを読んで新たにindexとしてセットしているので、blessingした内容は消える、という挙動であった。
さらに言えば、GitHubに上がっている状態のものはそもそも動作しないレベルのバグを抱えていた。 これは、Gemにpushしたものにはなかった問題のようだ。
どういった経緯でどういう問題が発生しているのかが、これのせいでかなり紛れてしまい、結構時間がかかってしまった。
修正
というわけで、修正したPureBuiler Simply 3.4.1をリリースした。
この修正により、ディレクトリを対象にして更新をかけたときに、更新のなかったドキュメントのindexは以前のindexの内容を維持するようになった。
# Restore skipped doc's frontmatter
orig_filelist = Set.new(target_docs.map {|i| i[0]})
proc_filelist = Set.new(processed_docs.map {|i| i[0]})
recov_filelist = orig_filelist - proc_filelist
recov_filelist.each do |filename|
@indexes[filename] = @indexes_orig[filename]
endというか、従来@indexes_origを使っている様子がないので、多分抜けなんだと思う。
この修正により、Chienomi MyPageもうまく動作するようになった。
マイページとウェブ通知使ってほしい
Chienomi MyPageは熱心なChienomi読者のために既読管理として提供されている機能だ。 LocalStorageを使用しており、サーバーには何も送信しない。
そう、マイページでもユーザーをトラッキングしない、それがChienomiのスタイル。
ウェブ通知(push通知)はユーザーの要望によって実装された機能なのに全く使われていない。 MyPageに連動する形で提供されており、新着記事の通知を受け取ることができる。
こちらはメニューの「ウェブpush通知で受け取る」から辿ることができる。