我正在尝试部署 Rails 应用程序,但遇到了资产预编译错误。根据生产日志,该错误是由名为 screen.css 的“蓝图”CSS 脚本引起的(如您在下面的错误输出中看到的)。然而,根据生产日志,该资产实际上确实是经过预编译的。我尝试将 screen.css 和 print.css 显式添加到预编译数组中,在 application.rb 和 config/environments/production.rb 文件中,如下所示
config.assets.precompile = %w(screen.css print.css)
但无济于事。我还尝试在本地预编译我的资产并将整个内容推送到服务器。我已经尝试过这里列出的所有建议:blueprint/screen.css 未预编译 https://stackoverflow.com/questions/7443536/blueprint-screen-css-isnt-precompiled和这里:蓝图 CSS Rails 3.1 帮助 https://stackoverflow.com/questions/7300532/blueprint-css-rails-3-1-help同样的问题在这里仍未解决:Ruby on Rails 3.2 编译资源无法正常工作 https://stackoverflow.com/questions/9105027/ruby-on-rails-3-2-compiled-assets-are-not-working
我不知道接下来要尝试什么来解决此错误。任何帮助将不胜感激!下面是日志输出以及我的部署文件、cap 文件和 application.rb 文件。预先感谢您提出的任何建议!
以下是部署后日志文件的一些输出,您可以在其中看到 screen.css 已预编译。错误输出如下:
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'
这是部署文件:
$:.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
这是我的文件:
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
load 'config/deploy'
load 'deploy/assets'
这是 application.rb 配置文件:
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