2013-07-09 13 views
25

環境(Herokuの上):Herokuのレール4で有効なレールが有効になっています:それは正しいですか?

のRails:4

ルビー:(didnの」私たちは、Herokuのにアプリを展開し、パブリックフォルダに何もアクセスできなかったかのようにそれが見えた

2静的ファイルを参照してルータが蹴られた後、ルートマッチングについて不平を言う)。

は、この問題を回避するために、私たちはproduction.rbファイルに

config.serve_static_assets = true 

を設定します。これは本当にこれを処理する最善の方法ですか?それとも、私たちはヒーローで正しくホストされる方法をアプリに設定できなかったのですか?

+1

静的資産をホスト/提供するCDNベンダーを用意することをお勧めします。AWS S3も別のオプションです。 https://devcenter.heroku.com/articles/s3 –

+0

アセットをローカルで事前にコンパイルし、as3バケットにアップロードしますか?また、資産をコンパイルするときに、最後に何らかの種類のハッシュ値が落ちているように見えます(キャッシュの強制終了を前提としています)。それを扱う方法はありますか?私は実際にstylesheet_link_tag "application" vsを今言っている便利さを楽しんでいるので、私は手動で静的参照を更新する必要はありません。これは適切なCSSファイルを指すよう手動で設定する必要があると思いますバケツ内? – Mike

+0

これを見てください。 https://devcenter.heroku.com/articles/cdn-asset-host-rails31 asset_syncのように見えると、アップロード作業を手助けすることができます。私が言っていることは、あなたが静的なものを提供するためのプロセスをレールにさせないようにする(またはおそらく決してない)良いアイデアなので、レールはデフォルトで 'serve_static_assets'をデフォルトでfalseに設定します。 –

答えて

10

ディーンウィンチェスターが述べたように、静的資産にはCDNを使用することをお勧めします。実際、Herokuのみを使用している場合、RokuアプリケーションはHeroku Cedarのアーキテクチャではありませんので、静的資産を提供する責任を負う必要があります。

設定方法config.serve_static_assets = trueは、CDNを設定してHerokuのみを使用したくない場合に使用します。

+4

NB。 HerokuアプリがCDNの起源である場合(例:CloudFrontの場合:https:// devcenterheroku.com/articles/using-amazon-cloudfront-cdn-with-rails)、あなたは 'config.serve_static_assets = true'を設定する必要がありますので、オリジンはキャッシュミスを処理できます。 –

+0

AH私は事故であなたを落としてしまいましたが、現在はロックされています:( –

+2

'config.serve_static_assets = true'とは何ですか?ドキュメントからもわかりません。 –

14

以前のRailsのバージョンでは、Herokuは静的アセットの配信を有効にするプラグインを挿入しました。この問題は存在しませんでした。このプラグインシステムがRails 4で削除されたので、彼らは今も同じことをする宝石を作りました。あなたのGemfileでそれを有効経由:

gem 'rails_12factor', group: :production 

あなたはまた、もちろん、あなたの資産のためのCDNを使用することができますが、あなたがする必要はありませんしているGetting Started with Rails 4.x on Heroku

を参照してください。

13

これはRailsの4.2で非推奨、それはに変更する必要があり、今のRailsで5.0

config.serve_static_assets = true 

を削除する予定のエイリアスです:レールガイドが間違っている

config.serve_static_files = true 
+3

そしてRails 5.1では' '' config。 serve_static_files'は廃止され、Rails 5.1で削除されます。 'config.public_file_server.enabled' '' – Timotei

2

。試してみてください...

関連する問題