2015-01-24(土) [長年日記]
■ この日記をHerokuへ移設した
こないだから空き時間を使って不足している機能やバグをぼちぼちつぶしていて、読み手にとってはそろそろ問題なくなってきたのでDNSを切り替えた(実際はこれを書いているのは移行前だけど直後に切り替える予定)。
「読み手にとっては」ということは書き手にはまだ問題が残っているわけだが(笑):
カテゴリ入力の補完が効いてない (これ書いてて気づいた)fixed(更新・設定はherokuのhttpsを使うようにしてみたら) CSSやJavaScriptが読み込めないfixed- いくつかのプラグインがまだplugin storageに未対応 (これはぼちぼちやっていく)
それ以前にきっぱりあきらめた機能もあって:
- 「本日のリンク元」機能は使わない (保存先がないので)
- 絵日記プラグインも使わない (すでにpicasaをメインにしていたので問題ない)。過去の画像は表示だけ有効になるようにした
- サイト内検索 (これは作りこめばいいので時間がないだけ。今はGoogleを生で使うようにしてる)
まぁ、2015年現在としてはなくてもいいかな、と思って割り切った。
今回はHerokuの新機能であるGitHub連携を有効にしてみたので、GitHub上のリポジトリにpushするだけでデプロイされるようになってる。これで複数の日記をpush一発で運用できる……はず。
もうちょっと安定したら(希望者があれば)他のユーザにも広げていきたい。
2015-01-22(木) [長年日記]
■ また $SAFE がらみのトラブルを直した
この日記をHerokuで動かすにあたっていろいろ手を入れているので、関連パッケージも最新版を使わざるをえなくなっている。
そこでGemfileのオプションでGitHubの最新ソースを使うように指定したら、動かないプラグインが出てきた。GitHub上のissueで何人かで相談してたら「gemをrubygems.org以外から持ってくると$LOAD_PATHにtaintなパスが混じる」ということがわかり(tDiaryのプラグインは$SAFE = 1で動いているのでこの状況でrequireすると死ぬ)、とりあえずは$LOAD_PATHの中身を全部untaintするという雑な対応をしたのだった。
とはいえこれはいささかセキュアでないので大元で直そうと思い、bundlerのコードを追いかけてはみたものの複雑でよくわからず、binding.pryを埋め込んでデバッグしたらその先でrubygemsに迷い込む。rubygems、ruby本体にバンドルされてるのにコードに「TODO」があふれててちょっと怖い(笑)。というか「ここか!?」と思ったメソッドに「TODO: this logic seems terribly broken」と書いてあって白目。
もっともその部分は実際には通ってなくて、bundlerが同名のメソッドを上書きしていたんだけど。ムキーッ(←自分でもモンキーパッチを当てるくせに人がやると腹を立てるタイプ)。
というわけで、あやうくrubygemsに手を入れるはめになるところ、bundlerに閉じたパッチを作れたのでプルリクした。ふー、やれやれ。でもまぁ、tDiary以外にこのバグで困る人はまずいないだろうな……。