読者です 読者をやめる 読者になる 読者になる

Rails4.2 Webrickでproduction環境動作させるには

Rails

本番環境でWebrickで運用することはまず無いと思うが、開発時にproduction環境で動作を確認したいことがあったが少し設定の必要があった。
まずAsset Pipelineを使用するのでrake assets:precompileをしておく必要がある。
ApacheやNginxで動作させる場合には静的コンテンツはそれらWebサーバを介して配信されるので問題ないが、Webrick(に限らずRailsアプリケーションサーバ単独)で動作させる場合には静的コンテンツをRailsで扱う設定が必要になる。

Rails4.2より前はserve_static_assetsという設定で管理されていたが、Rails4.2になりserve_static_filesに変更になりserve_static_assetsは非推奨になっておりRails5.0で削除予定設定しているとWARNINGが出る。

DEPRECATION WARNING: The configuration option `config.serve_static_assets` has been renamed to `config.serve_static_files` to clarify its role (it merely enables serving everything in the `public` folder and is unrelated to the asset pipeline). The `serve_static_assets` alias will be removed in Rails 5.0. Please migrate your configuration files accordingly.

config/environments/production.rbに設定は記載されており、Rails4.2での設定値は下記の様になっている。

  # Disable serving static files from the `/public` folder by default since
  # Apache or NGINX already handles this.
  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?

環境変数で値を設定するようになっている。これがtrueになっている時Webrickで静的ファイルが扱えるので画像の表示等ができるようになる。