開発/生産モードのRails 3&Assets Pipeline
-
27-10-2019 - |
質問
生産サーバーのアセットをプレシャルするのは非常に遅いです。そこで、私は開発マシンでそれらを再コンパイルし、資産をAmazon S3にアップロードすることにしました jammit
. 。すべてが完了しましたが、私にはいくつかのネガティブな問題があります:
- 含める必要があります
public/assets
ディレクトリへgit
コントロール。 ifpublic/assets
生産サーバーの場合はディレクトリが空です - 開発マシンのアセットを事前コンパイルする場合
application.js
HTMLには圧縮されているように含まれており、そのようにしてJSコードを複製しました。 JSを変更すると、事前コンパイルされていないため、効果がありませんapplication.js
このコードを中断します。
そうすれば、私の開発プロセスには次の手順が含まれています。
- JSまたはCSSを変更する場合は、事前コンパイルされた資産を削除します
- いくつかの変更を行います
- プリコンパイルアセット
- アセットをS3にアップロードします
jammit-s3
- 資産を含む私の変更をgitサーバーにコミットしてプッシュします
- Capistranoによる展開
私の質問は次のとおりです。
- 開発環境を構成することは可能ですか?
application.js
私がそれを持っているならpublic/assets
ディレクトリ? - 空の環境を構成することは可能ですか
public/assets
ディレクトリ?アセットはS3サーバー上のみです。
解決 2
GitignoreにAssets Dirを含めることでこの問題を解決し、1つのファイルのみを除外しました - public/assets/manifest.yml
そして、生産サーバーは現在正しく動作します config.action_controller.asset_host = "http://assets.example.com"
作品。それは必要です manifest.yml
ファイル
他のヒント
質問1については、実行以外の恒久的な解決策を知りません。
bundle exec rake assets:clean
開発モードに戻る前に。アセットパイプライン全体をオフにすることなく、開発中の資産を無視できるかどうかを確認することに興味があります。
Production.RBには、2番目の質問のオプションがあります。
# Enable serving of images, stylesheets, and JavaScripts from an asset server
config.action_controller.asset_host = "http://assets.example.com"
その後、リモートホストに依存しているため、Assets Directoryを無視する必要があります。それが役立つことを願っています。
所属していません StackOverflow