0.01
No commit activity in last 3 years
No release in over 3 years
Add support for single and multiple CDN hosts for the Rails asset pipeline
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

>= 0
 Project Readme

rails-assets-cdn

This gem allows you to add single or multiple CDN hosts for the asset pipeline. It aims to be flexible and configurable.

Installation

Add this line to your application's Gemfile:

gem 'rails-assets-cdn'

And then execute:

$ bundle

Then add assets_cdn.yml to your config directory. Here's an example of the the most minimal config file possible:

development:
  host: assets.myapp.dev

And here's a more complex config file supporting multiple CDN hosts for the production environment:

development:
  host: assets.myapp.dev

production:
  enabled: true
  hosts:
    - assets1.myapp.com
    - assets2.myapp.com
    - assets3.myapp.com
    - assets4.myapp.com
  protocol: browser
  fallback_protocol: http

Important: don't forget to restart your application!

Configuration options:

enabled

A boolean value to enable/disable the CDN.

host

A single CDN host.

hosts

An array of hosts. The path of the asset is hashed then the modulo is extracted to determine which CDN host to use.

This is a simple and effective way to evenly split the load between multiple hosts. It is recommended to have 4 hosts (even if they all CNAME to the same destination) since some browsers can't download more than 2 files per host at the same time.

fallback_protocol

If request is used for protocol, this is the protocol Rails will use when an asset URL is generated outside of a request since it won't be able to determine the protocol to use.

Default: http

protocol

The protocol to prepend to the asset URL.

Default: browser

Options:

  • browser (Let the browser determine which protocol to use)
  • request (Rails prepends the protocol of the current request)
  • http (force http://)
  • https (force https://)

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request