config.assets.cache_store and Rails 4
config.assets.cache_store and Rails 4
Alex Mccaw's post on faster deploys on Heroku got us pretty psyched up. We punched our memcached credentials in:
# We use Heroku and Memcachier
# This doesn't work
config.assets.cache_store = :dalli_store, ENV["MEMCACHIER_SERVERS"], { username: ENV["MEMCACHIER_USERNAME"], password: ENV["MEMCACHIER_PASSWORD"]}
But that didn't work.
After poking around, it seems that the DSL for config.assets.cache_store
is broken in Rails 4.
You have to do this:
# This works
config.assets.configure {|env|
env.cache = ActiveSupport::Cache.lookup_store(:dalli_store)
}
If you're using memcachier like us without the gem, pass in the server credentials after # lookup_store(:dalli_store, options...)
Benefits
On our largest app, we've seen a very big increase in asset compilation time across deployments from 211 seconds.
Running: rake assets:precompile
Asset precompilation completed (31.36s) # Was 211 seconds
This could be used in staging
easily too since Memcachier's 25m developer version is free and pretty much enough. Just take note that the first compile will be longer because of network cost of reaching and writing memcached entries.