概要
railsの開発していて、jsのライブラリを入れる際にgemを通していれることがよくある。
jsのgemが実際にはメンテナンスされてなくて、gemを使う意味がなかったり、railsなどにdependencyがあってほかのgemが更新できないなどの問題がある。
一方でvendorに入れると、ライブラリが更新されたことが分からない。
こんなときに、bowerというjsのパッケージ管理を使うと便利みたい。
bowerで利用できるライブラリ
- http://bower.io/
- http://bower.io/search/
- 15696件のライブラリが利用できる
- bootstrapやjqueryやd3やangulerなどの有名なものももちろん使える
railsでの利用
- Ruby DSL configurationを利用するのが良さそう
- bower-railはしっかりメンテされてそう
- https://github.com/42dev/bower-rails/
bowerのセットアップ
- nodeのインストール http://nodejs.org/
- bowerのインストール
sudo npm install bower -g
- rails-bowerのgemのインストール
bower-rails
を追加してbundle install
- bowerのライブラリのインストール
rake bower:install
ライブラリの追加方法
1 Bowerfileに追加
asset 'bootstrap'
2 rake bower:install
を実行
3 assetsにパスを追加
app/assets/javascripts/application.js.coffee
#= require bootstrap
app/assets/stylesheets/application.css.scss
*= require bootstrap
4 bootstrapにはlessが必要なのでGemfileにless-railsを入れる
gem 'therubyracer' # for less-rails
gem 'less-rails'
bowerに統一する必要がある
- jquery-railsなどのgemで管理しているjsやcssのライブラリはbowerで統一する必要がある
- だからjquery-railsは必要なくなる
- coffee-railsやless-railsやsass-railsはそのまま。gemで管理。
- 確かjquery-fileupload-railsなど、特定のgemは独自でjqueryのversionをfixしたりしているので、js系のライブラリはbowerに統一するのはすごく良さそう
herokuにdeploy
- herokuのbower-rails用のビルドパックがあり、それを利用するようになる
- buildpackはしっかりメンテされてそう
- https://github.com/qnyp/heroku-buildpack-ruby-bower
- !!! herokuへのdeployはうまくいかなかった。調査中。。。
参考
- 日本語でbowerを解説 http://tohae.hatenablog.com/entry/2013/05/10/121548
- bowerの前はvendorにjsを入れることが推奨 http://stackoverflow.com/questions/21372331/rails-include-third-party-javascript-library-file