問題タブ [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.

0 投票する
1 に答える
282 参照

javascript - スプロケット: 2 つの異なるコントローラーに 2 つの異なる JavaScript ファイルを含めることはできますか?

私はRuby on Railsアプリケーションに取り組んでいます。すべてのコントローラーには、1 つの JavaScript ファイルがあります。ただし、2 つのコントローラーが必要とする機能 (business.js と呼びます) があります。2 つのコントローラーがそれを必要としているという理由だけで、このロジックをすべてのコントローラーで使用できるようにする application.js にこのロジックを配置したくありません。

ページには、必要な JavaScript ファイルのみを配置し、余分なものは何も配置しないようにしたいと考えています。

スプロケットが私の要件を満たすのに十分な柔軟性があるかどうか疑問に思っていました. sprocket のドキュメントから、明確な答えを得ることができませんでした。

0 投票する
1 に答える
1391 参照

ruby-on-rails - Heroku で Sprockets Rails プラグインを使用するには?

Rails アプリを Heroku にデプロイしましたが、Sprockets プラグインを使用していた Javascript が機能しません。

私の Heroku アプリは読み取り専用であるため、Sprockets が機能しないことを理解しました。私はこのsprockets_on_herokuプラグインを見つけましたが、それを使用する方法がわかりません:

  1. config.gem sprocketsconfig/environment.rbに追加しました
  2. sprockets.gems ファイルに追加しました
  3. これらをHerokuにプッシュすると、Sprocketsが正常にインストールされました
  4. ローカルで実行script/plugin install git://github.com/jeffrydegrande/sprockets_on_heroku.gitし、プラグインが正常にインストールされました

Heroku では何も変更されていないので、Heroku にプラグインをインストールしようとしましたがheroku plugins:install git://github.com/jeffrydegrande/sprockets_on_heroku.git、返されsprockets_on_heroku installedましたが、heroku restartまたはheroku pluginsコマンドはこれを返します。

~/.heroku/plugins/sprockets_on_heroku/init.rb:1: 初期化されていない定数 ActionController (NameError)

from /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/plugin.rb:25:in `load'

from /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/plugin.rb:25:in `load!'

from /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/plugin.rb:22:in `each'

from /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/plugin.rb:22:in `load!'

from /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/command.rb:14:in `run'

/opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/heroku:14 から

from /opt/local/bin/heroku:19:in `load'

/opt/local/bin/heroku:19 から

私は何をすべきか?

ケビン

0 投票する
3 に答える
709 参照

javascript - Rails 3 の Javascript 編成戦略

私は現在、多くの JavaScript コードを含むアプリケーションに取り組んでいます。すべてのページ/パーシャルにインライン JavaScript コードを書いていますが、ほとんどのコードは別の場所で再利用されています。これらの小さなスクリプトを、より便利で保守しやすいものにリファクタリングする方法を見つけようとしています。私は jQuery を使用しているため、組み込みの JS ジェネレーターは使用していません。

これまでのところ、次のことを考えてきました。

  • すべてをapplication.js新しい UJS スタイル ヘルパーに移動して、そのメリットを享受してください。これは、私が現在持っているものよりも少しだけ優れています。これは、大きな不格好な JS ファイルになってしまうためです。

  • js_erb gemを使用して、javascript ソース コードを書き込みapp/javascripts、i18n、HTML テンプレート、およびコンパイルを自動的に取得する方法を提供します。

  • 試したことがなく、rails3 と互換性があるかどうかもわかりませんが、sprockets-railsを使用してください。

そのようなトピックに関する経験/提案はありますか?

0 投票する
4 に答える
908 参照

ruby-on-rails-3 - Railsエッジでスプロケットを使って道場をプレイする方法は?

Rails 3.1 edgeは、スプロケットを使用して.jsファイルと.scssファイルを処理します。スプロケットは、コメントを使用して依存関係を処理します。

3つのフォルダー(dojo dijit dojox)をvendor / Assets/javascriptsに配置しました。次に、app / Assets / javascripts / application.js // = require dojo / dojo console.log(dojo);に行を追加します。

これで、dojoがapplication.jsにマージされました。しかし、道場には依存関係システム自体があります。より多くの道場モジュールが必要な場合。正しいパスが見つかりません。dojo.require( "dojox.grid.DataGrid"); // Webkitコンソールのエラー:エラー:'dojox.grid.DataGrid'を読み込めませんでした; 最後に試行した'../dojox/grid/DataGrid.js'// Railsサーバーログのエラー:127.0.0.1のGET "/undefined../dojox/grid/DataGrid.js"を4月16日土曜日01:26に開始しました: 05 +0800 2011

これらは2つの異なる依存関係システムです。どうすればそれらを組み合わせることができますか?

0 投票する
4 に答える
4985 参照

ruby-on-rails-3.1 - Rails3.1アセットをコメントアウトする方法はステートメントが必要です

新しいapp/asset / application.jsファイルでこの行をコメントアウトすることは可能ですか?もしそうなら、どのように?

つまり、CoffeeScriptまたはJavaScriptと誤解されないように、すでにコメントアウトされていますが、それでも明らかに目的を果たしています。

0 投票する
1 に答える
2177 参照

ruby-on-rails - Rails 3.1&Sprockets&コンパイル済みJSファイル

したがって、SprocketsアセットパイプラインでRails3.1-rc1を試してみるだけです。

走るrake assets:precompile

/ public/assetsディレクトリとapplication.jsファイルにMD5ハッシュを取得します。

しかし、問題はこれです:

JSを更新して実行するrake assets:precompileと、より多くのJSファイルが取得され、古いファイルは削除されません。

私はそれがどのように機能するかを確信しています-ブラウザは最初のものだけをピックアップし、古いものを手動で削除する必要があります。それがどのように機能するかとは思えません。

ちょっとした不満:rake assets:precompile何かを変えるたびに走らなければならないようです。痛いです。

(これがどのように機能するかについては、いくつかのドキュメントが必要だと思います)。

ありがとう。

0 投票する
2 に答える
1702 参照

ruby-on-rails - Sprocketsアーキテクチャを使用してRails3.1のJQueryプラグインでファイルを参照するにはどうすればよいですか?

Pluploadプラグインは良い例です。vendorディレクトリに追加されたプラグインのリストは次のとおりです。

これらのファイルをさまざまなスタイルシート、JavaScript、および画像ディレクトリに再配置するのではなく、そのままにして、Sprocketsrequireディレクティブで参照することをお勧めします。これは、特に画像ファイルや.swfや.xapなどの他のアセットに関してどのように行われますか?

0 投票する
2 に答える
711 参照

ruby-on-rails - Rails 3.1beta Sprockets は画像を見つけますが、画像は表示されませんか?

これを説明する最善の方法がわかりません。Rails 3.1beta と Ruby 1.9.2 を Windows 7 にインストールし、次のルートで新しいアプリを作成しました。

サスの一例は次のとおりです。

ルートが要求された場合:

画像は app/assets/images/summit-logo.png の下にあります

Sprockets がそれを見つけたように見えるのに、表示されていない理由についてのアイデアはありますか?

ありがとう!

0 投票する
5 に答える
11158 参照

ruby-on-rails - Rails 3.1 で CSS スタイルシート アセットを管理するには?

Rails 3.1 の新しいアセット パイプラインを学習しているところです。私が抱えている特定の問題の 1 つは、Sprockets が見つかったすべての CSS スタイルシートを 1 つの巨大なスタイルシートにマッシュアップする方法にあります。これが、手動でスタイルシートをマージして本番用に縮小するよりも有利である理由を理解しています。しかし、私は、すべてのルールを一緒にマッシュアップするのではなく、スタイルシートを選択的にカスケードできるようにしたいと考えています。たとえば、私は欲しい:

マスター.css

Railsアプリのすべてのページで読み込まれるようにしたいのですが、

admin.css は、管理セクション/名前空間内のページ/ビューによってのみ読み込まれます。

Rails 3.1 がスタイルシートを組み合わせてプロダクション用に縮小する優れた方法を利用するにはどうすればよいでしょうか。また、レイアウトごとに特定のスタイルシートの組み合わせのみをロードできるという以前の柔軟性も備えていますか?

または、レイアウトのボディタグにクラスを追加してこれを行う必要があります-

本体クラス="管理者"

そして、必要に応じてスタイル ルールをターゲットにします。SASS スコープのセレクターを使用すると、これは合理的な解決策になる可能性があります。

0 投票する
6 に答える
2087 参照

ruby-on-rails - Rails 3.1 とスプロケットにより、firebug を使用したデバッグが難しくなりますか?

Rails 3.1 では、スプロケットを使用してアセットを管理し、それらを単一のファイルにパッケージ化します。一般に、これはそれほど悪い考えではありません。

当面の問題を説明する外部ソースからの引用:

このアプローチの問題点は、デバッグが難しくなる可能性があることです。本番環境で「連結された」CSS ファイルを調べて、どのコードが含まれているか、含まれていないかを理解する必要がある場合、単に含まれている場合よりも、どこから何が来ているかを知るのが難しくなります。元のソース コード ファイル。

1つの解決策は、「連結」モードと「通常」モードを簡単に切り替える方法を用意することです(おそらく、すでに可能です。私にはわかりません)。これにより、通常の開発が妨げられなくなります。ただし、本番環境でデバッグするには、大きな連結ファイルに頼る必要があります。

Rails 3.0.X では、デザイナーは Firebug を使用して CSS 設定を簡単に特定できました。これにより、ファイルと行番号が直接示されます。これは、すべての CSS ファイルが個別であり、1 つにパッケージ化されていないためです。

それとも私は要点を逃していますか?