web-dev-qa-db-ja.com

rails 4有効Rails静的アセットを提供する:正しいですか?(herokuで)

環境:heroku

レール:4

ルビー:2

Herokuにアプリをデプロイしましたが、パブリックフォルダー内の何にもアクセスできないように見えました(静的ファイルが表示されなかったため、ルーターが起動し、ルートの一致がないというメッセージが表示されました)。

これを回避するために、

# Rails 4 only flag
config.serve_static_assets = true

私たちのproduction.rbファイルで。これは本当にこれを処理する最良の方法ですか?それとも、アプリをherokuで適切にホストするためのいくつかの設定に失敗しましたか?

29
Mike

これはRails 4.2で非推奨になり、Rails 5.0で削除される予定のエイリアスになりました。

config.serve_static_assets = true

次のように変更する必要があります。

config.serve_static_files = true
18
Karen

以前のRailsバージョンでは、Herokuは静的アセットの提供を有効にするプラグインを注入したため、この問題は存在しませんでした。このプラグインシステムはRails 4 、彼らは今同じことをするgemを作成しました。あなたはGemfileでそれを有効にします:

gem 'Rails_12factor', group: :production

参照 はじめにRails 4.x on Herok

もちろん、アセットにCDNを使用することもできますが、必須ではありません。

Rails 5要素以上で12要素プラットフォームで動作し、gemは不要になりました

14
Tom De Leu

Dean Winchesterが述べたように、静的アセットにはCDNを使用することをお勧めします。実際、Herokuのみを使用する場合、Heroku Cedarアーキテクチャされないがそれを行うため、Railsアプリケーションは静的アセットを提供する必要があります。

設定config.serve_static_assets = trueは、CDNを構成せずにHerokuのみを使用する場合の方法です。

Railsガイドが間違っています。お試しください...

config.assets.serve_static_files = true
2
kentendo