Passenger4.0.0RCでalways_restart.txtが効かない件について

zomです。
もうね、ぐったりするほどハマったので、他にもハマった人がいると思い投稿します。
【2014/04/05追記】
※4.0.40では元に戻っていたのでタイトルなどバージョンについて細かく追記しました。

ちょっとsinatraでWebAPIでも作ろうと思い、お遊びPCでApache×Passenger4.0.0RC4×Ruby2.0.0で環境作ってみようと思いました。
で、Ruby2.0.0をインストールしPassengerもインストールし(ここらへんは後日別エントリで投稿します!たぶん!きっと!)
開発ができるようにはなりました。

しかし、プログラムをなにか変更をするたびにサーバ再起動を要します。
これでは、Apache何百回再起動することになるねん、ということで
rackアプリケーションのルートディレクトリにtmp/restart.txtというのをtouchで作成してやればいいとのことです。
まー、そこらへんはpassenger restart.txtとかでググれば山ほど情報が出てくるので詳しくは書きません。

で、いちいちtouchするのもメンドいということで用意されているのが「always_restart.txt」というのがあります。
これはそのファイルがありさえすれば、毎回キャッシュを見ないみたいな挙動をしてくれます。

がっっっっっっっっ

肝心のこいつが効いてくれません!!!!Passenger4.0.0RC4だと!!!!

さて、先に解決方法をば。
rackアプリケーションのルートディレクトリ直下にalways_restart.txtを置くだけ
効かなかった人、Passenger4.0.0RC5でもかな?これで行けると思います。
やってみてください。

さて、なんでディレクトリが変わっているのか?

Passenger3.0.x系のソースから抜粋。

Passenger4.0.0RCのソースから抜粋。

というわけでですね、3系では、特定のディレクトリの下にalwaysもrestartも置きますよ、という実装から
4.0.0RCではディレクトリを指定しなかった場合はルートディレクトリ直下にalways、ルートディレクトリ/tmpの下にrestart、という謎実装に変わってるのが原因でした。
これバグなのかな?issueに上げていいかどうかの判断がつかないけど、ドキュメントでカバーできる範囲だからそうでもないのかなー、というのが自分の意見です。
もし英語に堪能な人がいたら作者の方に、意図とか訊いてみてください><
すでにどこかに書いてあるのかもだけど…。

これで三日ほど何もできなかった…

【2014/04/05追記】
passenger4.0.40で挙動が変わってたっぽいのでソースを見てみたらtmpの下に戻ってました。

4.0.0のRCがなくなったときもtmpの下じゃなくなってたはずなのに、結局元鞘ですかね?なんだったのか。

投稿者:

zom

都内でプログラマやってるアラサーの男性です。 このブログは日記とか書いてます。ゆるーくやってます。かるいオタクです。 パズドラ/クラクラ/ケリ姫/にゃんこ大戦争あたりをよくやってます。 以下、人名は敬称略。音楽大好き。平沢進、ヒトリエ、FinalFantasyあたりのコンサート・ライブによく行きます。マンガも大好きです。作者で言うと日本橋ヨヲコ、水上悟志あたり。

コメントを残す

メールアドレスが公開されることはありません。