問題タブ [sprockets]
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 - Rails 3.1アセットパイプライン:コントローラー固有のスクリプトをロードする方法は?
Rails 3.1 で新しいコントローラーを生成すると、コントローラーの名前を持つ JavaScript ファイルも自動的に追加されます。まず、この JavaScript ファイルは、関連するコントローラーが呼び出されたときにのみ使用されると思いました。
デフォルトでは、ツリー上のすべての JavaScript ファイルを含む -file に命令//= require_tree .
があります。application.js
コントローラー固有のスクリプトのみをロードするにはどうすればよいですか?
javascript - Rails3.1のhtmlからjavascript関数を呼び出す
Rails 3.1でcoffeescript、jQuery、およびスプロケットを使用すると、coffeescriptファイルは次のようなブロックにコンパイルされます。
これにより、関数fooとbarがグローバルスコープから外れるように見えるため、barはfooで呼び出すことができますが、どちらもhtmlコードから呼び出すことはできません。select onchange要素からfooを呼び出そうとすると、「変数が見つかりません:foo」が表示されます。
現在の回避策は、グローバルに使用可能なすべての関数を.jsファイルに移動することです。しかし、これを行う正しい方法は何ですか?
ありがとう
javascript - Rails 3.1はJavaScriptを難読化します
Rails 3.1 では、sprockets gem が導入されました。将来的にはオープン ソース ソフトウェアとしてリリースする予定の javascript/coffeescript で非常に大きなゲーム エンジンを作成しましたが、現時点では、コードを難読化して、ゲームでカンニングしようとする人々に対する小さな障壁を構築したいと考えています。 . 私の質問は:
すべての js ファイルを結合して作成された application.js ファイルの難読化バージョンを作成するには、どうすればよいですか? ベストプラクティス、宝石はありますか、それともまったく可能ですか?
ご回答有難うございます。
トム
ruby-on-rails - Rails 3.1 で Sprockets を使用して DRY のモジュール式の coffeescript を作成するにはどうすればよいですか?
私は、実用的な Javascript を作成しようとしている初期段階にいます。基本的に、アプリケーションの名前の下にすべての名前空間を作成して、グローバルをできるだけ回避しますが、その場所で宣言された関数にアクセスする方法を提供します。ただし、関数定義で非常に冗長になりたくありません。
私の理想の CoffeeScript は次のようなものです。
あなたは絵を手に入れます。このようにしてMyApp.Module.submoduleMethod = ->
、名前空間付き関数を適切に定義するたびに記述する必要がなくなります。クラス定義内で@
使用および定義することで、物事が簡潔に保たれます。
機能を複数の CoffeeScript ファイルに分割するまで、これはすべてうまくいっています。次に、私が本当に欲しいのは次のようなものです:
スプロケットがこれを行うことができるようには見えません。
私のコンテナファイルの正しい場所に私のCoffeeScriptファイルを要求する賢明な方法はありますか? または、CoffeeScript、Sprockets、および Rails 3.1 を使用して、個別のファイルに分割されたモジュラー コードを作成する別の方法はありますか?
javascript - Rails 3.1 "= require jquery"が機能しなくなる原因は何ですか?
Rails3.0.9アプリをRails3.1.rc5に移植しています。私application.js
はRails3.1自体によって生成されたものとまったく同じです。
しかし、アプリを実行してapplication.js
FirebugまたはChromeデベロッパーツールを見ると、次のように表示されます。
ディレクティブがなくなったため、ファイルはSprocketsによって処理されたように見えますが、ディレクティブはjquery
etalのコンテンツに置き換えられていません。サーバーコンソールまたはログにエラーは表示されません。
不思議なことに、blog
アプリ(正規のチュートリアルアプリ)を実行すると、正常に動作します(つまりapplication.js
、Firebugで調べると、jQueryのテキストが含まれています)。これは、アプリ内の何かが何らかの形で干渉していることを示しているようです。スプロケット付き。誰かがそのような問題(そしてうまくいけば回避策)について聞いたことがありますか?
これが私の設定です:
何が悪いのか途方に暮れています。Gemfileをトリプルチェックしました。私は実行して再実行bundle install
しましたbundle update
; 私はrc3、rc4、そして今はrc5を試しました。Ruby1.9.2p290を実行しています。何か案は?
javascript - スプロケットの事前処理された js ファイル (ビューではない) で escape_javascript およびその他のヘルパーを取得するにはどうすればよいですか?
私は Rails 3.1 とスプロケットのものを使用しています。
ERB を使用して、javascript_include_tag を使用してインクルードされる js ファイルを前処理したいと考えています。コードから生成されるのでERBで前処理しているのですが、ActionView::Helpers::JavaScriptHelperからescape_javascriptのようなヘルパーにたどり着けません。
私のファイルがdynamic.js.erbと呼ばれ、それが含まれているとしましょう
エラーが発生しないようにするにはどうすればよいですか。
ローカルサーバーにアクセスして尋ねると/assets/dynamic.js
ruby-on-rails-3 - スプロケットが scss ファイルをロードする順序を調整するにはどうすればよいですか?
別の scss ファイルで定義されているいくつかのスタイルを上書きできるようにしたいので、自分の scss ファイルが最終的な application.css ファイルに配置される順序に影響を与えたいと考えています。
これを行う方法がわかりません。
敬具、
ニルス
javascript - スプロケットが js ファイルで erb を適切に処理していない
ロケーション レコードの緯度/経度に基づいて静的マップを生成するための単純な gmaps V3 API 呼び出しがあります。ファイルはasset/javascriptsディレクトリにあり、location_static_map.erb.jsという名前です
コードは次のとおりです。
埋め込まれた erb コードで構文解析エラーが発生します。V3 api に対して構築された他の動的マップが正常に動作していることに注意してください。これは、埋め込まれた erb 評価の問題です。処理順序が間違っていましたが、erb コードの最初の行にヒットしたため、'latitude' の未定義のメソッド エラーが発生しました....
また、生成された application.js ファイルで解析エラーが発生していることにも注意してください。
任意の入力をいただければ幸いです.....
ruby-on-rails - Rails 3.0.x で Sprockets 2 を使用する方法 (プリコンパイル済みアセットの使用方法)
Rails 3.0 app で Rails 3.1 に導入されたアセット パイプラインの基本を複製しようとしています。
これまでのところ、 https ://gist.github.com/1112393 のようなものがあります。
それはうまくいきます:
- app/assets/、lib/assets、vendor/assets にアセットがあります...
- それらはすべて /assets で提供されます
- スプロケット2のオファーなどすべてを使用できます...
問題は、Rails アプリに静的アセットを提供させたくないということです。サーバーがそれを行う必要があります。私が正しく理解していれば、Rails 3.1 でアセットをプリコンパイルできるのはそのためです。そこで、まさにそれを行う rake タスクを作成しました (Sprockets::Environment の precompile メソッドを使用)。すべてのアセットが /public/assets/ にあります。
たとえば、私は
- アプリケーション-02f8c96b342b4569513d0edf39ef55eb.css
- アプリケーション-505e8f472350fb1e0d15f6ad2f5e0389.js
- gallery-icons-0e922050a85718fef3cd570df4eb5845.png
しかし、Rails 3.1 では、style.css.scss.erb でそのようなことができます。
そして、あなたは得るでしょう
プリコンパイル済みファイル内。
私が間違っていなければ、ハッシュを追加するためにRails 3.1で上書きされるstylesheet_link_tag、javascript_link_tagについても同じです。
これどうやってするの?
ありとあらゆるアイデアをください!ありがとう。
coffeescript - Rails 3.1 / Sprockets 2 / CoffeeScript が余分なコードを追加するのはなぜですか?
Rails 3.1 (rc5) を使用しており、レール (またはスプロケット) に含めたすべての coffeescript ファイルが、上部と下部で JavaScript を初期化する際に追加されていることに気付きました。つまり、空の .js.coffee ファイルが次のように出力されます。
これは、JavaScript のスコープを台無しにしてしまうため、いらいらさせられます (自分が何をしているのか本当にわからない場合を除きます)。私は通常、すべての JavaScript クラスを別々のファイルに分けています。関数コードでクラスをラップすると、クラスが互いに範囲外になるだけだと思います。または、少なくとも、未定義のエラーが継続的に発生しているため、それらにアクセスできないようです。
これをオーバーライドする方法はありますか?スプロケットのこのファイルは、このコードの追加に関係しているようです: https://github.com/sstephenson/sprockets/blob/master/lib/sprockets/jst_processor.rb
関数ですべてをラップすると、DOM がロードされるまで何も実行されないため、利便性が向上するように思えるかもしれませんが、私が知る限り、それは私のスコープを台無しにします。