I'm trying to deploy a rails app but I'm stuck with an asset pre-compilation error. According to the production log the error is being caused by a 'Blueprint' css script called screen.css (as you can see in the error output below). However according to the production log, this asset does in fact get pre-compiled. I've tried explicitly adding screen.css and print.css to the precompile array, both in the application.rb and config/environments/production.rb files as follows
config.assets.precompile = %w(screen.css print.css)
but to no avail. I've also tried precompiling my assets locally and pushing the whole thing to the server. I've tried all the suggestions outlined here: blueprint/screen.css isn't precompiled and here: blueprint css rails 3.1 help and the same problem remains unresolved here: Ruby on Rails 3.2 compiled assets are not working
I have no idea what to try next to resolve this error. Any help would be hugely appreciated! The log output is below, along with my deploy file, cap file and application.rb file. Thanks in advance for any suggestions you might have!
Here's some output from the log file after deploy where you can see that screen.css gets pre-compiled. The error output follows:
Compiled application.js (5ms) (pid 16431)
Compiled jquery.js (2ms) (pid 16431)
Compiled jquery_ujs.js (0ms) (pid 16431)
Compiled microposts.js (94ms) (pid 16431)
Compiled pages.js (1ms) (pid 16431)
Compiled sessions.js (0ms) (pid 16431)
Compiled users.js (0ms) (pid 16431)
Compiled application.css (17ms) (pid 16431)
Compiled blueprint/ie.css (0ms) (pid 16431)
Compiled blueprint/plugins/buttons/screen.css (0ms) (pid 16431)
Compiled blueprint/plugins/fancy-type/screen.css (0ms) (pid 16431)
Compiled blueprint/plugins/link-icons/screen.css (0ms) (pid 16431)
Compiled blueprint/plugins/rtl/screen.css (0ms) (pid 16431)
Compiled blueprint/print.css (0ms) (pid 16431)
Compiled blueprint/screen.css (0ms) (pid 16431)
Compiled blueprint/src/forms.css (0ms) (pid 16431)
Compiled blueprint/src/grid.css (0ms) (pid 16431)
Compiled blueprint/src/ie.css (0ms) (pid 16431)
Compiled blueprint/src/print.css (0ms) (pid 16431)
Compiled blueprint/src/reset.css (0ms) (pid 16431)
Compiled blueprint/src/typography.css (0ms) (pid 16431)
Compiled custom.css (0ms) (pid 16431)
Compiled microposts.css (13ms) (pid 16431)
Compiled pages.css (1ms) (pid 16431)
Compiled scaffolds.css (15ms) (pid 16431)
Compiled sessions.css (1ms) (pid 16431)
Compiled users.css (1ms) (pid 16431)
Started GET "/" for 12.13.14.15 at 2012-04-05 14:15:50 -0700
Processing by PagesController#home as HTML
Rendered pages/home.html.erb within layouts/application (1.1ms)
Rendered layouts/_stylesheets.html.erb (1.3ms)
Completed 500 Internal Server Error in 6ms
ActionView::Template::Error (blueprint/screen.css isn't precompiled):
1: <!--[if lt IE9]>
2: <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
3: <![endif]-->
4: <%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %>
5: <%= stylesheet_link_tag 'blueprint/print', :media => 'print' %>
6: <!--[if lt IE 8]><%= stylesheet_link_tag 'blueprint/ie' %><![endif]-->
7: <%= stylesheet_link_tag 'custom', :media => 'screen' %>
app/views/layouts/_stylesheets.html.erb:4:in `_app_views_layouts__stylesheets_html_erb___2010157553399413981_33056460'
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__4294160261947576619_31749320'
And here's the deploy file:
$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) # Add RVM's lib directory to the load path.
require "rvm/capistrano" # Load RVM's capistrano plugin.
require "bundler/capistrano"
set :application, "Project"
set :scm, "git"
set :repository, "ssh://server.example.ca/usr/local/git_root/project.git"
set :user, "deploy"
#set :rvm_bin_path, "/usr/local/rvm/bin"
set :rvm_ruby_string, "ruby-1.9.2-p290@project"
set :normalize_asset_timestamps, false
ssh_options[:forward_agent] = true
set :branch, "master"
set :deploy_via, :remote_cache
# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
set :deploy_to, "/usr/local/www/sites/project.example.ca/"
set :use_sudo, false
set :domain, 'project.example.ca'
role :app, domain
role :web, domain
role :db, domain, :primary => true
before "deploy:symlink", "assets:precompile"
namespace :assets do
desc "Compile assets"
task :precompile, :roles => :app do
run "cd #{release_path} && bundle exec rake RAILS_ENV=#{rails_env} assets:precompile"
end
end
Here's my capfile:
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
load 'config/deploy'
load 'deploy/assets'
Here's the application.rb config file:
require File.expand_path('../boot', __FILE__)
require 'rails/all'
if defined?(Bundler)
# If you precompile assets before deploying to production, use this line
Bundler.require(*Rails.groups(:assets => %w(development test)))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)
end
module Arbiterapi
class Application < Rails::Application
# Configure the default encoding used in templates for Ruby 1.9.
config.encoding = "utf-8"
# Configure sensitive parameters which will be filtered from the log file.
config.filter_parameters += [:password]
# Enable the asset pipeline
config.assets.enabled = true
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
# Precompile problem assets
config.assets.precompile = %w(screen.css print.css)
end
end