アプリの/public
ディレクトリ内に開発モードで問題なくアクセスできるアイテムがいくつかあります:favicon.ico
、robots.txt
。
私はこれらを開発中に見ることができます。 localhost:3000/favicon.ico
。ただし、本番環境にプッシュアップすると、アセットはそれらのパスに表示されません。その結果、ファビコンアイコンがなく、Googleはrobots.txtファイルを見つけることができません。
/public
ディレクトリに関連するURLからアクセスできるようにするには、どうすればよいですか?
app/config/environments/production.rb
に次の行を追加します
config.serve_static_assets = true
これがRailsガイドが言わなければならないことです
config.serve_static_assetsは、静的アセットを提供するようにRails自体を構成します。デフォルトはtrueですが、アプリケーションの実行に使用されるサーバーソフトウェア(NginxやApacheなど)が静的を提供する必要があるため、本番環境ではオフになっています。代わりにアセット。デフォルト設定とは異なり、実行時(絶対にお勧めしません!)またはWEBrickを使用して本番モードでアプリをテストするときにこれをtrueに設定します。そうしないと、ページキャッシュを使用できず、パブリックディレクトリの下に定期的に存在するファイルを要求できません。とにかくあなたのRailsアプリにヒットします。
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