問題タブ [asset-pipeline]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - アセットのプリコンパイル時に出力パスを一時的に変更する方法、Sprockets / Rails アセット パイプライン、3.1.0
リリースされたRails 3.1.0で動作するようにこのコードを更新しようとしています:
Sprockets::Environment#static_root が削除されたので、sprockets の出力ディレクトリを一時的に変更する最善の方法は何ですか?
編集:また、カスタム出力ディレクトリのアセットをクリーンアップできるようにしたいと思います:)
ruby-on-rails - モデルからアセット パイプラインの画像を参照するにはどうすればよいですか?
次のような人物のアバターに URL を返すメソッドを持つモデルがあります。
私は 3.1 にアップグレード中なので、ハードコーディングされた none 画像をアセット パイプラインから参照する必要があります。コントローラーまたはビューでは、 でラップするだけimage_path()
ですが、モデルにはそのオプションがありません。画像への正しい URL を生成するにはどうすればよいですか?
ruby-on-rails - rails 3.1.0 ActionView::Template::Error (application.css はプリコンパイルされていません)
インデックス機能を備えた単純なページコントローラーを使用して基本的なレールアプリを作成し、ページをロードすると次のようになります。
Gemfile
ruby-on-rails - 既存のJammitアセットパイプラインを新しいRails3.1バージョンに移植する必要がありますか?
Railsアプリケーションでアセットのキャッシュ、圧縮、最適化のためにJammitを実装しました。継続的インテグレーションプロセスと完全に統合されており、うまく機能します。そうは言っても、3.1ではSprocketsに基づく新しい正規のアセットパイプラインが導入されています。
Sprocketベースのアプローチには、システムの移植に値する利点がありますか?メリットがなければ、システムの変換に時間をかけたくありません。
ruby-on-rails-3.1 - Rails 3.1 asset precompilation - include all javascript files
I want Rails 3.1 to pick up more of my assets for precompilation. In particular, the default matcher for compiling files doesn't add .js
files from vendor/assets/javascripts
. I can just add the assets to the config.assets.precompile
list, but this seems annoying. I don't want to refer to them in the application.js
manifest, because I don't want them included in all pages.
In summary, any way to request that all .js
files found in vendor/assets/javascripts
get precompiled by rake assets:precompile
, but without having them included in all pages?
ruby-on-rails - 本番前にレール アセット パイプラインでエラーを検出するにはどうすればよいですか?
私は Rails 3.1 に慣れてきたばかりで、古いプロジェクトを更新し、新しいアセット パイプラインが開発モードと本番モードでどのように動作するかを解明しようとして時間を費やしました。
デフォルトconfig.assets.precompile
設定はapplication.cssとapplication.jsのみをブレスし、すべてを単一のスタイルシートと単一の JavaScript ファイルとして提供することを意図しています。
明らかに、それが望ましくない状況があるため、その構成変数のリストに項目を追加できます...
本番環境に移行するときにサンドボックス プロジェクトで遭遇した状況は次のとおりです。
- 開発中のサイトを閲覧したところ、すべてが機能していることがわかりました。アセットは個別のファイルとしてリンクされ、サイトは正しく表示されました。
- サイトをサーバーにアップロードし、本番環境で動作させようとしました。最初のエラーは、「ie.css」 (条件付きスタイルシート) がプリコンパイルされていないというものでした。(私は Safari を使用していましたが、このスタイルシートはダウンロードされませんでした
stylesheet_link_tag
。ページをレンダリングする前にヘルパーからエラーが発生しました。) - 実行
rake assets:precompile
して再試行しました。 - 問題のあるアイテムを追加して、
config.assets.precompile
再試行しました。 - 別のアセット エラーに到達するまで、エラーを縁石に蹴り落としました。
- 後藤 3.
これに対処する方法がわからなかったので、すべてのアセットを取得し、サイトが本番環境でレンダリングされていると思うまで、何度かぐるぐる回りました。次に、MSIE で試してみたところ、別のエラー 500: "belated_png_fix.js"が条件付きで読み込まれていましたが、それまでは発生しませんでした。
だから私の質問は、試行錯誤や統合テストへの過度の依存以外に、資産パイプラインがスタイルシートまたは JavaScript がプリコンパイル リストに追加されていないことを発見したときに、自分のサイトが爆発しないことをどのように予測できるかということです。 ?
また、スタイルシート アセットが不足している場合に、オンデマンドでコンパイルしたり、アセットが要求されたときに 404 を提供したりするのではなく、ページ全体でエラー 500 が発生する理由にも興味があります。これは「早期に失敗する」ための意図的な設計ですか?
ruby-on-rails-3.1 - 本番サーバーの起動時にイメージが提供されないのはなぜですか?
開発モードで起動すると、すべての画像と favicon.ico を適切に提供するライブサーバーに Rails 3.1.0 アプリケーションがあります。
しかし、実稼働環境で同じアプリを起動すると、パブリック フォルダー内のファビコン画像/その他の画像は提供されず、それらのパスは 404 エラーをスローします (興味深いことに、404 ページの静止画像も提供されません)。Rails Godsの手がかりはありますか?
NginX + Unicorn + Rails 3.1.0 を使用しています。Assets パイプラインは、404/500 エラー ページと favicon を除くすべてに使用されます。
ruby-on-rails - Rails 3.1: 圧縮されていないアセットを提供するときの断続的な 500 内部サーバー エラー
アプリを Rails 3.1 にアップグレードしています。よく引用されるように、Firebug はいくつかのアセットについて不平を言います。Firebug から貼り付けられたいくつかのエラーを次に示します。
ページを更新すると、同じエラーを示す別のアセットが生成されます。URL をコピーして貼り付けると、ファイルが正常に表示されます。
私は使用しています:
- Ubuntu 11.04
- アパッチ + パッセンジャー 3.0.9
これを修正するにはどうすればよいですか?
UPDATE : ログファイル
この特定の例でjquery-ui.js
は、Firebug でエラーが表示されていました。私のログファイルは次のようになりました:
スキップしたようjquery-ui.js
です!
2011 年 10 月 1 日更新:
passenger start
より説明的なエラーが発生するように見えるため、スタンドアロンのパッセンジャー ( ) で試してみました。jquery.js
これは、ファイルだけを読み込んで、繰り返し押しCTRL-R
てブラウザを更新し、そのアセットを繰り返し読み込もうとしたときに起こることです。
ruby-on-rails-3.1 - サブURIにデプロイするときに、Rails3.1でプリコンパイルされたアセットが壊れている
Rails3.1を使用するようにRails3アプリを更新している最中であり、その一環として、新しいアセットパイプラインを利用しています。これまでのところ、解決できないかなり厄介な問題を除けば、すべてが機能しています。
アプリケーションとそのすべてのアセットは、開発では正常に機能しますが、本番環境では、Passenger()を使用してサブURIにデプロイされhttp://the-host/sub-uri/
ます。これに伴う問題は、アセットがデプロイ中にプリコンパイルされ、CSS(まあ、それは.css.scss
ファイルです)ファイルの1つがgemのimage-url
ヘルパーを利用していることです。sass-rails
プリコンパイルプロセス中に、パスがプリコンパイルされたCSSファイルにハードコードされるため、サブURIは考慮されません。
私の.css.scss
ファイル:
コンパイルされたapplication-<md5-hash-here>.css
ファイルの結果:
正しく機能させるにはどうすればよいですか。
このシナリオは、質問が多すぎますか?もしそうなら、私は古い非アセットパイプラインの方法に切り替えて、からの画像とCSSを提供する必要がありpublic
ます。しかし、それは考えられて解決されるべきもののように思えます...?私は解決策を逃していますか?
編集1:代わりにerbソリューションを使用すると、予想どおり同じ結果が得られることに注意してください。
編集2:ブノワギャレットのコメントに応えて
いいえ、問題はに関連していませんconfig.assets.prefix
。私はそれを(/sub-uri/assets
デフォルトではなく/assets
)に設定しようとしましたが、それは間違ったことであることがわかりました-この設定はすでにサーバーではなくRailsアプリのルートに関連しているようです。それを削除する(したがってデフォルトに戻す)ことで、原因となったすべての奇妙な問題が修正されました(そして、多くの、すべてのアセットが最終的に作成されました/sub-uri/sub-uri/assets
-それはすべて非常に奇妙でした)。唯一の問題は、image-url
ヘルパーや友人は、プリコンパイルされたときにサブURIを取得しません。言うまでもなく、これは論理的です。プリコンパイルされている場合、Passengerで実行されているときに、このように構成されることを認識できなかった可能性があります。私の質問は、これをどのように通知するかであり、したがって、プリコンパイルされた結果に正しいパスが含まれることになります。確かにそれができるなら。
私の現在の回避策は、CSSでiamgeを次のように参照し、url(../images/bg.png)
パイプライン化されていない場所に配置することpublic/images
です。フィンガープリントやパイプラインが提供するすべてのものの恩恵を受けないため、ほとんど理想的ではありません。
ruby-on-rails - Rails 3.1 アセットのパイプラインとページの更新
ブラウザーで cmd+R (ctrl+R、F5) を押すたびに、すべてのスタイルシートと JavaScript が失われます。次にcmd + Rをクリックすると、正常に表示されます。お気に入り
とても面白いですが、生産されていません。何が起こっている?