Created
September 25, 2011 20:46
-
-
Save nhocki/1241135 to your computer and use it in GitHub Desktop.
Rake task to compile assets and push them automatically.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace :assets do | |
desc "Compile all the assets named in config.assets.precompile and push them" | |
task :compile do | |
AssetsCompiler.new.compile | |
end | |
class AssetsCompiler | |
def compile | |
ensure_clean_git | |
removed_previous_assets | |
compile_assets | |
commit_compiled_assets | |
push | |
end | |
def ensure_clean_git | |
raise "Can't deploy without a clean git status." if git_dirty? | |
end | |
def removed_previous_assets | |
run "bundle exec rake RAILS_ENV=production assets:clean" | |
end | |
def compile_assets | |
run "bundle exec rake RAILS_ENV=production assets:precompile" | |
end | |
def commit_compiled_assets | |
run "git add -u && git add . && git commit -am 'Compiled assets'" | |
end | |
def push | |
run "git push" | |
end | |
private | |
def run(command) | |
puts "+ Running: #{command}" | |
puts "-- #{system command}" | |
end | |
def git_dirty? | |
`[[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]]` | |
dirty = $?.success? | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment