1. Welcome
  2. Getting Started [+/-]
    1. Installing from RubyGems
    2. Installing from GitHub.com
    3. Installing with Sake
  3. The Basics [+/-]
    1. Hello World
      1. Application Generation Options
    2. Paths
    3. Environments
    4. Rake
  4. Configuration [+/-]
    1. Configatron
    2. Initializers
      1. Gems
      2. Mime-Types
  5. Routing [+/-]
    1. Default Routes
    2. Named Routes
    3. RESTful/Resource Routes
    4. Nested Resource Routes
    5. Regex Routes
    6. Wildcard Routes
    7. Blocks in Routes
    8. Redirecting
    9. Error Handling
    10. Deferred? Routes
    11. Misc. Routing
  6. Controllers [+/-]
    1. Actions
    2. Headers/Status
    3. Handling Content Types
    4. Filters
    5. Helpers
    6. Layouts
    7. Tell Messaging
    8. Redirecting
    9. Rendering
      1. Engines
        1. Erubis
        2. XML Builder
        3. Extending
          1. Case Study: PDF Writer
      2. Types
        1. :action
        2. :text
        3. :inline
        4. :xml
        5. :url
        6. :partial
        7. :template
        8. :public
        9. Extending
          1. Case Study: PDF Writer
  7. Views [+/-]
    1. Helpers
    2. Layouts
    3. Assets Host
    4. Assets Management
    5. Form Builders
  8. Sessions [+/-]
    1. Session Store API
  9. Request/Response [+/-]
    1. Cookies
  10. Testing [+/-]
    1. RSpec
    2. Test::Unit::TestCase
  11. Porlets [+/-]
    1. Developing
    2. Testing
    3. Packaging
    4. Using
  12. Plugins [+/-]
    1. Extending
      1. Case Study: PDF Writer
  13. Deploying [+/-]
    1. Thin
    2. Passenger (mod_rails)
    3. Joyent Accelerator
  14. Mack More [+/-]
    1. mack-active_record
    2. mack-asset_packager
    3. mack-caching
    4. mack-data_factory
    5. mack-data_mapper
    6. mack-distributed
    7. mack-encryption
    8. mack-facets
    9. mack-haml
    10. mack-javascript
    11. mack-localization
    12. mack-markaby
    13. mack-notifier
    14. mack-orm
    15. mack-pdf_writer
  15. Rails to Mack Cheat Sheet
  16. Contributing
  17. APIs [+/-]

Assets Packager

As described in Assets Management, you can easily create groups for javascript/stylesheet asset files for your application. And to refer to the defined group(s), all you have to do is specify the name when calling the stylesheet or javascript method, e.g. <%= stylesheet 'my_bundle' %>

What that does internally is it will expand the group name into multiple reference to the stylesheet or javascript files. And this could be inefficient for your application. This gem will be perfect complement to the asset manager; when included, it will package up (including performing data compression) all the asset files defined in a group, and make a single reference to the group name, so this way the browser will only make single request to get the asset file instead of n number of requests for the asset files.

But what happen if you want to turn off the packaging? Well two things you could do: first the obvious one, remove this gem from your application. The second one is that there's a configuration that you can use to disable the packaging--configatron.mack.assets.enable_bundle_merge. By default, this is turned on in production mode, and off in other environment. Use this flag to turn on and off the packager.

So, here're the steps to setup your application to use the asset packager:

# first, include the packager gem to your application.
# in config/initializers/gem.rb file add the following line of code
gem.add "mack-asset_packager", :libs => "mack-asset_packager"

# then, define assets group as described in the 'Assets Management' chapter.
# For example, let's define the following group in config/initializers/assets.rb
assets_mgr.my_bundle do |a|
  a.add_css "first_css"
  a.add_css "second_css"
  a.add_js "first_js"
  a.add_js "second_js"
end

# now that you have both things setup, then in your view file where 
# you refer to the stylesheet/javascript asset files, make sure you change them to refer
# to the asset bundle
# For example: in the application.html.erb file, you could do the following:
<%= stylesheet "my_bundle" %>

This guide was written for Mack version 0.8.2