Help us understand the problem. What is going on with this article?

Railsデフォルトのjqueryは圧縮されてない

More than 5 years have passed since last update.

注記(7/21追記)

  • production環境ではassets precompileによって圧縮されるため、下記の設定は不要です。
  • assets pipelineを理解する上での参考程度にしてもらえればと思います。

app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require_tree .
[1] pry(main)> puts Rails.application.config.assets.paths
/Users/naoty/workspace/sample/app/assets/images
/Users/naoty/workspace/sample/app/assets/javascripts
/Users/naoty/workspace/sample/app/assets/stylesheets
/Users/naoty/workspace/sample/vendor/assets/javascripts
/Users/naoty/workspace/sample/vendor/assets/stylesheets
/Users/naoty/workspace/sample/vendor/bundle/ruby/1.9.1/gems/jquery-rails-1.0.14/vendor/assets/javascripts
  • rails newで生成されるapplication.jsでロードするjqueryは、上記のコマンドで確認できる通り、jquery-railsというgemに同梱されているjquery.js。ちなみに現時点では最新のv1.7.2。
  • なので、圧縮されてないものがデフォルトではロードされてしまう。これは、けっこう気づきにくい罠だと思う。
$ cd `bundle show jquery-rails`
$ tree vendor/
vendor/
└── assets
    └── javascripts
        ├── jquery-ui.js
        ├── jquery-ui.min.js
        ├── jquery.js
        ├── jquery.min.js
        └── jquery_ujs.js
  • jquery-railsの中を見てみると、jquery.min.jsがある。
  • 圧縮版あるんだから、こっち使う。
  • jquery-ui.minもあるから、jquery-ui使う場合も同じ。まあ、jquery-uiは必要なコンポーネントだけに絞るべきなので、jquery-rails内のjquery-uiは使うことないと思う。
app/assets/javascripts/application.js
//= require jquery.min
//= require jquery_ujs
//= require_tree .
  • これで圧縮版のjqueryをロードする。
repro
世界59か国6,500以上の導入実績を持つCE(カスタマーエンゲージメント)プラットフォーム「Repro(リプロ)」を提供
https://repro.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away