Apacheが動いているのにWEBrickも動かしちゃった時のassetsの話1
Apache+Phusion PassengerでRailsがすでに動いているのに、
ポート番号3000でWEBrickをわざわざ起動させてしまいassetsが取得できなくて焦った時の小話。
そのときは、assetsが部分的に読み込めたり読み込めなかったりしたもので意味が分からなかったです。
まあ、production環境で
config.serve_static_assets = false
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
config.assets.compile = true
の設定をしていたから、
assets:precompileをしてprecomileしたファイルをpublicディレクトリにおいていないのが
悪いと言われればおわりですが。
少し面白かったので、まとめておきます。
WEBrickで動かしていたRailsアプリケーションにアクセスするためのURLをRails.root:3000としています。
404になったものそうでないもの
最初に読み込めたファイルと404になったファイルをまとめておきます。
読み込めたもの
- views内のhtml
- Rails.root:3000/404で404.html
読み込めなかったもの
views内のhtmlが見れる
ビューはWEBRickが動かしているRailsのアプリケーションが読み取って、
Rubyで書き出しているので、routes.rbの記述に則っているurlであれば素材を読み取っているのではなくて、
サーバのプログラムの出力を見ているので、そのときは気づかなかったんですが、assets関係ないですね。
404,422,500
public以下のエラーの時に表示するhtmlのアドレスで422.htmlや500.htmlは見つからなかったのに、
404.htmlだけ見つかったというより、全部ファイルが見つかってないのでWEBrickが404のページのコードを吐き出してるだけなんじゃないでしょうか。
この2つを見ていると、Railsを動かしているサーバが動的に吐き出しているhtmlのコードについては見れそうです。
訂正
precompileが関係あるとしたら矛盾しないか?と思って、
ログをもう一回見直したら、
application.jsを後でいじっていたときの話と混同してました。すみません。
precompile関係なさそうだし、assetsは読み込めてなかったです。
せっかくなので、もう少しヘルパとかの話を続けます。