Skip to content

Instantly share code, notes, and snippets.

@subelsky
Created March 3, 2013 21:48
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save subelsky/5078466 to your computer and use it in GitHub Desktop.
Save subelsky/5078466 to your computer and use it in GitHub Desktop.
Quick rake task to check if assets need to pre-compiled before deployment (since I don't like precompiling during deployment)
namespace :assets do
task :check do
root_dir = File.join(File.dirname(__FILE__),"..","..")
assets_last_modified_at = Dir["#{root_dir}/app/assets/**/**"].map { |p| File.mtime(p) }.sort.last
assets_last_compiled_at = Dir["#{root_dir}/public/assets/**/**"].map { |p| File.mtime(p) }.sort.last
if assets_last_modified_at > assets_last_compiled_at
fail "Assets need to precompiled; last asset modified at #{assets_last_modified_at}"
end
end
end
@subelsky
Copy link
Author

subelsky commented Mar 3, 2013

I have a deployment rake task that runs this task as a prerequisite.

@ngauthier
Copy link

rails 4 does that

nick@nite:~/workspace/wonderpus$ time rake assets:precompile
I, [2013-03-03T16:57:10.293490 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime-webfont-39959c4d0ed4708ff007bd7379330491.eot
I, [2013-03-03T16:57:10.296108 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime-webfont-f69c2eb8befb4ed4bc39c5bdf3311ccd.svg
I, [2013-03-03T16:57:10.297458 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime-webfont-f1c3e0cf69e5e8ce9cd2959e3033644d.ttf
I, [2013-03-03T16:57:10.298700 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime-webfont-01e816614d7c45cbb1fc98b299c1f189.woff
I, [2013-03-03T16:57:10.300021 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_bold-webfont-23302a809cbc3542abc09c0d4ef1473f.eot
I, [2013-03-03T16:57:10.301515 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_bold-webfont-33cf08ac0cb187607b37823b0c0b6eb5.svg
I, [2013-03-03T16:57:10.303106 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_bold-webfont-bc9f68a16809d5db5342933c5946d2bf.ttf
I, [2013-03-03T16:57:10.304689 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_bold-webfont-7acd8104cd020334bb29c851e4e5a826.woff
I, [2013-03-03T16:57:10.306326 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_bold_italic-webfont-50cfd79f41d379691fac4d174930d04b.eot
I, [2013-03-03T16:57:10.308152 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_bold_italic-webfont-0a03730837e03c4284132971faaf3bf1.svg
I, [2013-03-03T16:57:10.309982 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_bold_italic-webfont-ca9962fa097c4ac85080a669ca6c9980.ttf
I, [2013-03-03T16:57:10.311916 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_bold_italic-webfont-9584c5af94b0f0efbb083ea1354f3ba2.woff
I, [2013-03-03T16:57:10.331749 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_italic-webfont-e813dd45df6a1ebc0960b2746f700ba7.eot
I, [2013-03-03T16:57:10.334221 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_italic-webfont-1a14d271dd822cffe8bd5523fd719561.svg
I, [2013-03-03T16:57:10.336500 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_italic-webfont-271cd743b2d50b4bcc3b2c2f494882a6.ttf
I, [2013-03-03T16:57:10.338699 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/courier_prime_italic-webfont-5988867e78bda65d587a9a7c8ec24b8b.woff
I, [2013-03-03T16:57:10.340861 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/expand-8d599749eb38dd928a372ec1f4143cdc.png
I, [2013-03-03T16:57:10.343103 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/wonderpus-15edbc27efa5baf5144e38977d1ce86b.jpg
I, [2013-03-03T16:57:10.929282 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/application-608aa8887b6f3de74057c10d55edb1b7.js
I, [2013-03-03T16:57:11.379582 #6262]  INFO -- : Writing /home/nick/workspace/wonderpus/public/assets/application-6ad214b6b7bba7324f714ae79fa01cf1.css

real    0m2.948s
user    0m2.724s
sys 0m0.176s
nick@nite:~/workspace/wonderpus$ time rake assets:precompile

real    0m1.757s
user    0m1.652s
sys 0m0.092s

@jjulian
Copy link

jjulian commented Mar 3, 2013

I'd love to see this integrated into Capistrano. If no assets modified, use the previous version if it exists.

@dcunning
Copy link

dcunning commented Mar 4, 2013

Be aware the task doesn't check if assets inside gems have been updated, which may be a problem for some.

@subelsky
Copy link
Author

subelsky commented Mar 4, 2013

thanks guys! Nick looks like this is a solved problem, thanks!

@akitaonrails
Copy link

If you're in Rails 3 you can use this: https://github.com/ndbroadbent/turbo-sprockets-rails3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment