Pros
• No more vendor/assets
• Proper versioning
• Dependency resolution
• No additional build step
• Already used in few production apps with no big
issues
Rails Engine
require "rails-assets-bootstrap/version"
!
require "rails-assets-jquery"
!
if defined?(Rails)
module RailsAssetsBootstrap
class Engine < ::Rails::Engine
# Rails -> use vendor directory.
end
end
end
bower is a mess
• just git clone
• duplicates, momentjs vs moment, swipe vs Swipe
• separate repositories, e.g angular-bower
• {bower, package, component}.json - unreliable
• bower info missing ”main”
Slide 30
Slide 30 text
bower is a mess
• no common structure
• lib.js at top level
• src, dist, release, etc. directories
• .{js,css}.min duplicates
• not compiled packages
• missing dependencies
Slide 31
Slide 31 text
Other issues
• version spec differences
• bundler API - no versions in dependencies API request
• web frontend is essential
• rails-assets-jquery vs jquery-rails conflicts
Slide 32
Slide 32 text
Technical issues
• Gem::Indexer bug
• global bower cache - custom bower fork
• auto updates via bower api
• index locking
• background jobs, blocking
• weak performance
• do as much as possible in memory
Slide 33
Slide 33 text
We need your help
• Spread the word
• Improve bower.json files
• Bug discovering and fixing