WHY BUNDLE-FU IS SPECIAL
Web 2.0 sites have lots of tiny javascript/css files, which causes one extra round trip per file to the server and back! This is bad! Bundle-fu throws it all up into a big package and sends it out all at once.
Bundle-fu can speed your load time up around 50%.
It:
- Does not require a separate config file
- Automatically regenerates the bundle if you modify an included file, or change the include order.
- Is easily bypassed by passing "?bundle_fu=false" into your page (including assets separately vs bundled). It does not affect other users of your site, and stays bypassed for the your session only. Bundle-fu makes debugging fun!
- Is optimized for production mode (only generates the bundle file once when the server is first started).
- Puts the bundles in javascripts/cache and stylesheets/cache, so it's easy to ignore with subversion.
- Rewrites relative URLs in your CSS files, so you'll never have broken images.
- Minimizes your javascripts by default using the Ruby Version of JSMin. Optionally, if you install PackR, it will automatically use that instead.
- No additional requests on your rails application - bundled files are served as static files.
- Supports multiple combinations of JS/CSS, using the :name parameter
USAGE / INSTALLATION
Step 1
Install this plugingit clone git://github.com/timcharper/bundle-fu.git vendor/plugins/bundle-fu && rm -rf vendor/plugins/bundle-fu/.git
Step 2
Put the following around your stylesheets/javascripts (note it works with any method of including assets!):<% bundle do %> ... <%= javascript_include_tag "prototype" %> <%= stylesheet_link_tag "basic.css" %> <%= calendar_date_select_includes "red" %> <script src="javascripts/application.js" type="text/javascript"></script> ... <% end %>That's it!
HELP
- General Documentation
- Read the FAQ and CAVEATS
- Post to the mailing list
OTHER RUBY ON RAILS ASSET BUNDLERS
Bundle-fu isn't the only Ruby on Rails plug-in that will bundle assets. It simply has a new approach to doing so.
Other asset bundling solutions:
- AssetPackager - Requires a separate config file to work. Option to compress javascript.
- Rails 2.0 - Very clean implementation. Doesn't rewrite relative CSS urls. Bundles only in production mode. Doesn't bundle includes from asset include helpers from 3rd party plug-ins. No bypass mechanism (though it could be implemented easily). No js minification.