web-dev-qa-db-ja.com

Railsパブリックフォルダアイテムは本番環境では利用できません

アプリの/publicディレクトリ内に開発モードで問題なくアクセスできるアイテムがいくつかあります:favicon.icorobots.txt

私はこれらを開発中に見ることができます。 localhost:3000/favicon.ico。ただし、本番環境にプッシュアップすると、アセットはそれらのパスに表示されません。その結果、ファビコンアイコンがなく、Googleはrobots.txtファイルを見つけることができません。

/publicディレクトリに関連するURLからアクセスできるようにするには、どうすればよいですか?

13
Tyler

app/config/environments/production.rbに次の行を追加します

config.serve_static_assets = true

これがRailsガイドが言わなければならないことです

config.serve_static_assetsは、静的アセットを提供するようにRails自体を構成します。デフォルトはtrueですが、アプリケーションの実行に使用されるサーバーソフトウェア(NginxやApacheなど)が静的を提供する必要があるため、本番環境ではオフになっています。代わりにアセット。デフォルト設定とは異なり、実行時(絶対にお勧めしません!)またはWEBrickを使用して本番モードでアプリをテストするときにこれをtrueに設定します。そうしないと、ページキャッシュを使用できず、パブリックディレクトリの下に定期的に存在するファイルを要求できません。とにかくあなたのRailsアプリにヒットします。

14
Kirti Thorat

Rails 5.1

app/config/environments/production.rbに次の行を追加します

config.public_file_server.enabled = true

更新しました

config/environments/production.rbには次の行が含まれます:

config.public_file_server.enabled = ENV['Rails_SERVE_STATIC_FILES'].present?

これは、Railsサーバーを起動するときに、コマンドラインでRails_SERVE_STATIC_FILESを渡すことができることを意味します。例:

Rails_ENV=production Rails_SERVE_STATIC_FILES=yes Rails s -b 0.0.0.0 -p 3000
14
Stanley Shauro