【发布时间】:2012-02-01 15:05:33
【问题描述】:
何时需要将资产添加到 config.assets.precompile 以及何时不需要,我有点困惑。
(我的问题可能源于这个应用程序是从 rails 2.x 迁移的;很快我会从头开始重建它作为 3.x 应用程序,但不要'还没有时间。)
这是我的问题:我有一个 .css 和 .js 文件,除非我将它们添加到 application.rb 中的 config.assets.precompile,否则 sprockets 找不到它们。我无法想象我必须为每个 .js 和 .css 都这样做,是吗?
例如,我遇到此问题的一个文件是 app/assets/stylesheets/facybox.css。
application.css 是:
/*
*= require_self
*= require_directory .
*/
(是的,require_directory 故意而不是 require_tree)。
我在部署期间在我的服务器上运行rake assets:precompile。生成的application.css 包含facybox.css 的内容。
facybox.css 被部分引用,如下所示:
<% content_for :header do %>
<%= stylesheet_link_tag "facybox" %>
<% end %>
但是当我转到包含部分的页面时,我得到:
Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Admin#compositions
Showing /srv/zmx/releases/5420c4dde6fbec53d78cffe78396085f263ed039/app/views/shared/_preview_assets.erb where line #6 raised:
facybox.css isn't precompiled
我认为这是因为 sprockets 正在寻找文件的指纹副本,该文件不存在除非我将其添加到 config.assets.precompile。然后一切都很好。
谁能解释一下?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline sprockets