トップ 最新 追記
RSS feed

ただのにっき


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以外にこのバグで困る人はまずいないだろうな……。

Tags: ruby

2015-01-17(土) [長年日記]

焼肉八起に行ってきた

[写真]ハラミとカルビ 夕飯をなんにしようかと話していて「肉が食べたい」と意見が一致したので、かみさんが以前知り合いから「相模原に住んでいるのに焼肉八起を知らないなんて」みたいなことを言われたという相模大野の店へ。

土曜の夜ということでずいぶん混んでいたが、しばらく待って席に通された。普通は予約して行くものらしい。肉もなかなか出てこなかったけど、そういうことならまぁ、次は混んでない日時を選んで来るとしよう。肉はどれも満足のいくクオリティで、そのわりには高くもないので、これはなかなかいい店を教えてもらった。今どき無煙ロースターですらない煙たい店だけど、これだけ味がいいなら文句はないね。また来よう。

写真が寂しいのは、けっこう待ったので腹が減って、すぐに焼き始めてしまったため(笑)。


2015-01-16(金) [長年日記]

この日記をHerokuへ移行実験中

最新のrubyはすでに$SAFEの4が使えなくなっていて、それはつまりtDiaryが使っているsandbox機構が用をなさなくなることを意味している。複数のユーザで同じホストを共有している場合、ユーザごとにアクセス権を分けるようにしないと、他人の日記データをいじったりできてしまうのでよろしくない。

というわけで複数ユーザをホストしているような場面では、suExecのような仕掛けを使うか、個々の日記をコンテナに入れるような運用に移行していかなければならない。それを見越してtDiary本体でも従来はローカルファイルに入れていたデータをデータベースにも入れられるようにする仕組みを作ったりと対応を進めているのだが、こないだリリースした4.1.0からプラグインのデータもデータベースに入れられるようになったので、そこそこ準備は整ってきた感じだ(まだ対応しているプラグインが少ないんだけど)。

Herokuのような揮発性のPaaSを使って普通に運用できることを確認するために、この日記のデータをHerokuにコピーしてみた。ストレージにはMongoDBを利用。

ちゃんとコンバータを書いたのでデータの移転作業は順調だったのだけど、なぜかTimeoutで日記が表示されなくて、なんでかなーと悩んでいたら、Amazonプラグインがおかしかった……というかProduct Advertising API用リバースプロキシが過アクセスでエラーを吐いていたのが原因という。そっちかよ(笑)。

rpaproxyはけっこうフリーライダーが多くて、毎秒1回くらいのペースでアクセスしてくるアフィリエイターがときどき発生する。見つけては弾くようにしてるんだけど、この作業自体を自動化しないとあかんなー。

Tags: tDiary
関連する日記: 2015-01-22(木)

トップ 最新 追記
RSS feed