0

我正在尝试部署一个 Rails 应用程序,但我遇到了资产预编译错误。根据生产日志,错误是由名为 screen.css 的“蓝图”css 脚本引起的(如您在下面的错误输出中所见)。然而,根据生产日志,该资产实际上是经过预编译的。我尝试在 application.rb 和 config/environments/production.rb 文件中显式添加 screen.css 和 print.css 到预编译数组,如下所示

config.assets.precompile = %w(screen.css print.css)

但无济于事。我还尝试在本地预编译我的资产并将整个内容推送到服务器。我已经尝试了这里列出的所有建议:blueprint/screen.css 没有预编译 ,这里: blueprint css rails 3.1 help ,同样的问题在这里仍未解决:Ruby on Rails 3.2 编译的资产不起作用

我不知道接下来要尝试什么来解决此错误。任何帮助将不胜感激!下面是日志输出,以及我的部署文件、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

这是我的capfile:

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
4

1 回答 1

0

我遇到了同样的问题。但事实证明,我丢失的资产被编译成 application.js(因为它合并了所有文件),所以我只需要删除对特定文件的引用(在我的例子中是 webcam.js)。

您的文件已合并到 application.css 等...

于 2012-09-04T17:24:50.173 回答