11

Rails 3.1にアセットクラウドを自動的にアップロードし、ローカルにホストされているものを提供する代わりにそれらを使用できる宝石や方法がありますか?コンパイル済みアセットを手動でアップロードしてから、そのアセットホストを使用するようにrails app configを変更するのは簡単ですが、アセットが変更されたときにクラウドフロントへのアップロードを再度手動で行う必要があります。これのための良い方法はありますか?Rails 3のAmazon CloudFrontへの自動資産配備?

答えて

8

012を参照してください私たちはS3にそれを使用していますが、私はCloudFrontの部分は、資産がS3になるとかなり簡単だと思います。

最終的には、導入プロセスで実行するために追加するレーキタスクになります。

1

別のオプションはhttps://github.com/moocode/asset_idです。readmeにはクラウドフロントで使用する例があります。 これはレール3.1で動作するはずですが、私は3.0.xでしか使用していません。

Ss Johnは、すべてのソリューションは、レイクタスクであり、レール内のアセットパスを変更するための少しの論理に終わるだろうと語った。

10

Cloudfrontsの "Custom origin"オプションを使用する場合、アップロードする必要はありません。Cloudfrontは、必要に応じてサーバーからアセットを取得します。参照をこの設定の詳細については:

http://blog.ertesvag.no/post/10720082458

+0

と自動gzip圧縮を有効にすることができます...とElastic Beanstalkでを使用して、それらのために、与えられたあなたの資産はおそらくデフォルトでプリコンパイルされていますnginxサーバはクラウドフロントにサービスを提供しているので、このアプローチにはほとんど影響がありません(リクエストは決してレールアプリには当てはまらない)。 – kross

13

確かにgithubの上 asset_sync をチェックしてください。または、Heroku開発センターの記事Using a CDN asset Host with Rails 3.1 on Herokuを参照してください。

asset_syncとCDNカスタムの起源を比較すると、アプリケーションがプロダクションで資産を遅延コンパイルしたり、アプリケーションサーバーから直接プリコンパイルして提供することができます。しかし、私はそれを言うだろう。私はそれを書きました。プリコンパイルのapplication.rbで資産バンドル:あなたはすべての資産を意味する資産をプリコンパイルすることができasset_syncとS3で

  • すぐに資産ホスト/ CDN上で提供する準備ができてあるだけですを必要とすることができます、生産にメモリを節約する
  • あなたのアプリケーションサーバーは資産要求のために決してヒットしません。あなたは高価な計算時間を費やすことができます。コンピューティング。
  • ベストプラクティスのHTTPキャッシュヘッダーはすべてデフォルト
  • によって設定されているあなたは、1つの余分コンフィグ
+0

HTTPキャッシュヘッダーがデフォルトでは設定されない理由を知っていますか?彼らは今、asset_sync設定ファイルで手動で設定する必要がありますか? config.custom_headers = {'Cache-Control' => 'max-age = 315576000'、 'Expires' => 1.year.from_now.httpdate}私は何も設定することはできません。 – Richlewis

関連する問題