When we added the Compass CSS authoring framework to our projects, new wrinkles appeared in the deployment process (which is based on Capistrano. Several workflow options were considered:
Committing the artifacts to Git was used for our first prototypes, but is unsuitable for team projects because it's a sure-fire way to introduce merge conflicts. Running compass on the server (either with Cap or the Drupal module) is appealing, but a minority of our projects deploy to hosts without the ability to install Compass. Rather than support multiple strategies, we decided on the last option - executing Compass on the workstation running Capistrano.
Changes are needed to several files:
compass_app_log.txt .sass-cache compass_generated_stylesheets *-s[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].png
http_path = "/sites/all/themes/metaltoad/" css_dir = "compass_generated_stylesheets" sass_dir = "sass" images_dir = "images" javascripts_dir = "compass_javascripts" fonts_dir = "fonts"
stylesheets[all][] = compass_generated_stylesheets/screen.css stylesheets[all][] = compass_generated_stylesheets/media.css stylesheets[all][] = compass_generated_stylesheets/print.css
# build Compass artifacts set :theme_path, "#{app_root}/sites/all/themes/metaltoad" after "deploy:update_code" do run_locally("cd #{theme_path}; compass clean") run_locally("cd #{theme_path}; compass compile --output-style compressed") upload("#{theme_path}/compass_generated_stylesheets", "#{release_path}/#{theme_path}/compass_generated_stylesheets") # Glob is nasty, but the generated_images directory # option isn't supported until Compass 0.12. Dir.glob("#{theme_path}/images/*-s[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].png").each do|f| upload(f, "#{release_path}/#{f}") end end
Long-term, we'll probably migrate after "deploy:update_code"
to a proper Capfile task.