0

Rails アプリをデプロイしようとしていますが、アセットのプリコンパイル エラーが発生します。プロダクション ログによると、エラーは screen.css と呼ばれる「Blueprint」css スクリプトによって引き起こされています (以下のエラー出力で確認できます)。ただし、プロダクション ログによると、このアセットは実際にはプリコンパイルされています。次のように、application.rb ファイルと config/environments/production.rb ファイルの両方で、screen.css と print.css をプリコンパイル配列に明示的に追加しようとしました。

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

しかし、役に立たない。また、アセットをローカルでプリコンパイルして、全体をサーバーにプッシュしようとしました。ここで概説されているすべての提案を試しました: blueprint/screen.css isn't precompiled とここ: 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

ここに私のキャップファイルがあります:

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 に答える