問題タブ [jammit]
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 - ActionController::Base#page_cache_directory を変更することによる、Jammit を使用した Heroku での静的アセット キャッシュ
Heroku にデプロイされた Rails アプリの CSS と JS をパッケージ化するために Jammit を使用しようとしていますが、Heroku の読み取り専用ファイル システムが原因でそのままでは機能しません。これを行う方法について私が見たすべての例では、パッケージ化されたすべてのアセット ファイルを事前にビルドすることを推奨しています。Heroku は Git ベースでデプロイされているため、これらのファイルが変更されるたびにリポジトリに個別にコミットする必要があり、これは私にとって受け入れられる解決策ではありません。代わりに、Jammit がキャッシュされたパッケージを書き込むために使用するパスを変更したいと思います#{Rails.root}/tmp/assets
(変更することによりActionController::Base#page_cache_directory
)。これは Heroku で書き込み可能です。
私が理解していないのは、キャッシュされたパッケージのデフォルトパスを使用しても、毎回Railsスタックにヒットすることなく、キャッシュされたファイルがどのように使用されるかです。私が何を意味するのか説明しましょう:
Jammit のヘルパーを使用してパッケージを含めると、次のようになります。
これにより、次のスクリプト タグが生成されます。
ブラウザがこの URL をリクエストすると、実際には にルーティングされJammit::Controller#package
、パッケージのコンテンツがブラウザにレンダリングされ、キャッシュされたコピーが に書き込まれます#{page_cache_directory}/assets/application.js
。このキャッシュされたファイルは最初のリクエストで構築され、その後のリクエストは Rails スタックにヒットすることなく、キャッシュされたファイルを直接提供する必要があるという考え方です。Jammit コードを調べましたが、これがどのように発生するのかわかりません。への後続のリクエストが/assets/application.js
単純にJammit::Controller
再度ルーティングされ、キャッシュされたファイルが使用されないようにするのを妨げるものは何ですか?
私の推測では、ファイルが存在する場合はファイルを提供し、存在しない場合はリクエストをコントローラーに転送する、私が見ていない場所にラックミドルウェアがあると思います。その場合、そのコードはどこにありますか? ActionController::Base#page_cache_directory
また、変更する場合(Jammit がキャッシュされたパッケージを書き込む場所を効果的に変更する場合)、どのように機能しますか? #{Rails.root}/tmp
はパブリック ドキュメント ルートの上にあるため、そのパスにマップされる URL はありません。
ruby-on-rails - Rails用のJammit gemでjavascriptテンプレートをコンパイルしますか?
Rails (3.0.3 / 1.9) では Jammit を使用して静的圧縮とその他すべてのフロントエンド機能を提供しています。Javascript テンプレートを使用して、見苦しいフロントエンド コードを置き換えようとしていますが、デフォルトの JST コンパイラは Windows の改行を処理できないようです。
assets.yml ファイル:
_topicPreview.jst をすべて 1 行にすると、正常にコンパイルされます。
ページが読み込まれ、JST._topicPreview([トピックの JSON バージョン]) メソッドが使用可能になります。美しい。
JST の魅力の半分は可読性と保守性にあるため、JST には適切な書式を設定したいと考えています。JSTファイルに改行を追加するとすぐに、ページがスローUncaught SyntaxError: Unexpected Token ILLEGAL
されますwindow.JST['_topicPreview'] = template('...[the escaped JST file]...')
コード トレースでは、一重引用符を解析してエスケープしていることがわかります。そのため、改行を処理できないことに驚きました。
他の誰かがこの問題に遭遇しましたか? テンプレート生成コードにいくつかの余分な文字列置換をハッキングするよりもクリーンな修正はありますか?
メタ: 私は JavaScript テンプレートにかなり慣れていませんが、独自の StackOverflow タグを使用する必要がありますか?
編集
これは既知の問題であり、gem にマージされる保留中の修正があるようです。
jquery - Jammit 圧縮は開発モードで機能しますが、圧縮された JS としては機能しません
私のRailsアプリは現在かなり進歩しており、含まれているJSファイル(プラグインを備えたAloha Editor + Gritter、1MBを超えるJSで複数のファイルを構成)を適切に圧縮したいと考えています。Railsとの統合が優れているため、Jammitを選択しました。ここに私の config/assets.yml があります:
説明のために: aloha.js は拡張された jQuery 1.4.2 ライブラリであり、/javascripts/ .js および /gritter/ .js 内のファイルはほとんどがそれに依存しています (jQuery)。ビューコードにタグを含めています
簡単です。
dev モード (assets.yml に package_assets: on がある) に切り替えると、Jammit は JS ファイルをそのままにして、それらすべてを 1 つずつ埋め込みます。私のアプリはまったく問題ありません。
ただし、本番モード (env = :production、または assets.yml に package_assets: が常に含まれる) の場合、Jammit は約 700kB の圧縮された JS ファイルを作成します (うわー、それはファット モンスターです)。これは正しく埋め込まれますが、JS エラーが発生します」ページの読み込み時にjQuery が定義されていません。私の最初の推測では、コンパイル中にJSファイルの順序が変更されるべきではないのに変更されるのでしょうか?
もう 1 つ: コンプレッサーをデフォルト (yui) のままにしておくと、ロード時にさらに悪い JS エラーが発生します。
誰か助けてくれませんか?
javascript - Rails3 ビュー - JS テンプレートのディレクトリ構造
ここで提案されているように、Javascript テンプレートを含めるために public フォルダーに重複したディレクトリ構造を持つことは本当に好きではありません。私はプロジェクトに飛び込もうとしています。私のすべての JS ビューを他のビューに入れることから私を説得できる人は誰でも、そうしない理由を教えてください。私の考え:
Backbone、Jammit テンプレート、またはその他の Javascript を使用してデータのビューを作成する場合、そのコードは理想的には /app/views/[object] ディレクトリに置くべきではありませんか? データを表す方法が複数あるアプリケーションを設計している場合、それらのビューをすべて同じ場所に置くべきではないでしょうか?
もちろん、ルートを設定して Rails にファイルを提供させるのは意味がありませんが、Jammit/Closure/別の JS 圧縮ツールを使用している場合は、ディレクトリ構造と JS の間に処理レイヤーを既に追加しています。クライアントに送信します。それは、コードの編成/保守にとって最も意味のある場所にテンプレートを配置できるということではないでしょうか?
ありがとう。
ruby-on-rails - Jammit + Heroku+Cloudfrontを使用してGzip圧縮されたアセットを提供する方法
Webアプリを作成し、Rails2.3のHerokuにデプロイしました
また、すべてのファイルを圧縮してCloudfrontにアップロードしました。
現在、Herokuはすべての静的アセットを正しく提供していますが、Jammitが作成した.gzバージョンは提供していません。
それ以外の場合、私のPageSpeedは優れていますが、Gzip圧縮のため、10ポイント短くなっています。
誰かが私がGZip圧縮をどのように活用できるか教えてくれれば、それは大きな助けになるでしょう。
gzアセットを確認したい場合に備えて、私のサイトはwww.weddings9.comにあります。
javascript - Jasmine を効果的に使用して、Jammit 経由でパッケージ化された JavaScript アセットをテストするにはどうすればよいですか?
Jammitを使用して JavaScript アセットを組み合わせている Rails アプリがあり、JavaScriptの BDD スタイルのテストにJasmineを使用したいと考えています。Jasmine 内から Jammit によって生成された「パッケージ」にアクセスすることについて誰かアドバイスがあれば教えてください。
問題は、Jasmine が、テストするディスク上の JS ファイルのリストを定義することによって構成され、それらのファイルを独自のテスト ランナー ページに含めて、ブラウザーに読み込まれて実行されることです。
Jammit でパッケージ化する前に、jasmine.yml 構成ファイル内の個々の JS ファイルをそれぞれ参照できます。Jammit が生成するコンパイル済みのJavaScript テンプレート。
Jammit を手動で実行して、最初にコンパイル済みのアセットを生成してから Jasmine を実行することもできますが、変更をテストするために各テストを実行する前に手動でアセットを再生成する必要があり、高速なテストが非常に困難になります。駆動型ワークフロー。
私は何とかできるかどうか疑問に思っています:
- Jasmine のラック サーバー内から Jammit コントローラーをマウントして、Jasmine からパッケージを提供できるようにしますか? これは基本的に、Rails の開発環境内から Jammit がすでに行っているのと同じように機能します。
- テストが実行される前に、ページが読み込まれるたびにアセットをパッケージ化するために Jasmine に何らかの方法でフックしますか? これは遅くなりますが、ステップを節約し、最新の状態に保つことができます。
助言がありますか?まだ始めたばかりなので、間違っている可能性もあります。アドバイスをいただければ幸いです。:-)
ありがとう!-ジョン
ruby-on-rails-3 - jammit-s3がaws-s3と競合する
両方の宝石がある場合、エラーが発生します:
Paperclipを使用してS3にアップロードする場合と、jammitアセットをS3にアップロードする場合の両方が必要です。の解き方?
ruby-on-rails - Windows x64 での jammit gem の問題
jammit gem に問題があります。「rake」を実行すると、問題があるというメッセージが表示されます - メッセージの一部:
$ rake -t (c:/Ruby187/test 内) rake が中止されました! ロードするそのようなファイルはありません -- win32/open3 c:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-3.0.6/lib/active_support/dependencies.rb:239 :require' c:/Ruby187/lib /ruby/gems/1.8/gems/activesupport-3.0.6/lib/active_support/dependencies.rb:239 :不要'
環境に関するいくつかの情報: OS: Windows 7 64 ビット Ruby 1.8.7 GEMS: jammit (0.6.0) クロージャ コンパイラ (1.1.1) yui-compressor (0.9.6)
Gemfile から jammit を削除すると、コマンド rake -t は問題なく実行されます。
ご提案ありがとうございます。
ruby-on-rails - Heroku Jammit GEM と最新の Heroku Gem
デプロイには次のheroku jammit gemを使用しています:
毎晩の展開中に、heroku は私の heroku gem を更新するように私に要求し、その後、この jammit gem を壊してしまいました。次のエラーが表示されます。
heroku_jammit gem '/lib/heroku_jammit.rb' 内
新しいheroku gemで動作するようにこの行を更新する方法について何か提案はありますか?
ありがとう
ruby-on-rails - Heroku に Locomotive CMS をデプロイする際の Jammit 警告
インストール ガイドhttp://www.locomotivecms.com/support/installation/herokuに従って、機関車 CMS を heroku にデプロイしようとしています。アセットを S3 バケットにアップロードしました。そのため、localhost では問題なく動作しますが、heroku でサイトにアクセスすると、エラー メッセージが表示されます。
私はherokuログをチェックしました:
どうやら、jammit とアセットに問題があるようです。
今まで Google で役立つヒントが見つかりませんでした。それを解決する方法はありますか?
更新: mongoid.yml を調整しましたが、上記と同じエラー メッセージが表示されます。ログを再度確認しました:
今回は次の行が問題だと思います。
heroku のログインとパスワードを再度設定する必要があると思います。それを試してみましょう...
更新 2: まだ動作しません。私のmongoid.yml構成の下
config/initializers/locomotive.rb の私の設定