そこで、Rails3 のアセット パイプラインの調査を開始しましたが、これまでとは少し違うユース ケースが必要なため、レシピを探しています。
私はよく、開発のために webrick をローカルで実行してから、アプリのデプロイされたインスタンスに対して Passenger+Apache を実行します。
アプリは http://server/approot/... などの suburi パスで構成されます。
Webrick パスをデプロイされたインスタンスのように機能させる
map '/approot' do run appために、config.ru. 現在、webrick は http:// local:3000/approot/... にもあります。
混乱
このセットアップを考えて、私は使用しようとしましrake assets:precompileたが、ローカルと展開の間で多くの構成の問題が発生しました-ファイルの欠落、パスの誤り、firebug の 404 など。
config.assets.initialize_on_precompile = falseアセットをプリコンパイルするときに、(いくつかの展開された環境があり、それらを異なる名前で呼んでいます.ug.)application.rbのアプリを初期化しようとするのを防ぎます。productionconfig.assets.precompile += %w( *.js *.css )application.rbjquery.js や ujs、rails.js など、欠落していたものを含めます。config.assets.prefix = "/approot/assets"上記のマップ (config.ru 内) がアセットに適用されない問題を修正するには、アセットを にプリコンパイルする必要がありましたが./public/approot/assets、それがローカルでのみ機能するかどうか、つまりデプロイした場合、アセット パスはhttp:// server/approot/approot/(js|css|...)?_
アセットをプリコンパイルすると、rake タスクは env に切り替わりますがproduction、Rails3 のドキュメントからは、スプロケットが引き続きローカルでオンザフライでコンパイルしてそれらの動的アセットを使用するのか、それとも静的なプリコンパイル済みアセットを代わりに提供するのかは不明です?
- を入れてみ
config.serve_static_assets = trueましたが、とenvironments/development.rbでどのように機能するかわかりません。assets.debug を false に設定すると、Webrick ログで GET リクエストが非表示になっているように見えますが、「問題を解決した」[sic] という投稿を見ました。config.assets.compress = falseconfig.assets.debug = true
レシピの要件
そこで、次のことを行うレシピが欲しいです。
http://server/approot/assets/...パッセンジャーまたは Webrick で実行されている (つまり、デプロイされているかローカルである) かに関係なく、アセットはパスから一貫して正しく提供されます。これが不可能な場合は、ローカルの開発環境を切り替えて、Passenger + Apache も使用できます。大したことではありませんが、可能かどうかを知りたいだけです。生のアセットは
/app/assets通常の Rails3 のように存在しますが、それらをプリコンパイルすると、デプロイされた env でまったく同じように機能するため、アセット ファイルの参照が壊れません/assets/image/...(つまり、現在、パスが明確な場合に探している多くの参照があります)。としてセットアップし/approot/assets/image...ます (Rails3 doc からは、root とサブリへのデプロイについて仮定があるかどうかは不明です (例:http:// server/assets/...vs.http:// server/approot/assets/...)) 。スプロケットはデプロイされた環境では使用できません(申し訳ありませんが、私たちの制限です)。これは、Rails3 アプリが効果的に静的アセット アプリのように見える必要があることを意味します。これがプリコンパイル済みアセットの本来の機能であることはわかっていますが、パスの問題により、宣伝どおりに機能させることができません。
TL;DR - 適切な組み合わせを知っていればうまくいくかもしれない、たくさんの別々のことを試しているような気がします.