我一直在处理生产中铁轨资产管道的复杂问题,现在已经有一周了。我终于差不多完成了。我有两个我在css文件中引用的图像。
正在预编译css文件,并在文件中相应地引用预编译的图像。
background:url(/assets/k-opacity-70-f75f0169dbfb178b3aedbf11429dfd68.png);
#intro{background:#111 url(/assets/intro-bg-12afabffede338ee9a72dbff2488bfea.jpg) no-repeat center;
我根据Rails网站上的建议编辑了我的config / application.rb,以确保我预编译了我需要的所有文件。
config.assets.precompile << Proc.new do |path|
if path =~ /\.(css|js)\z/
full_path = Rails.application.assets.resolve(path).to_path
app_assets_path = Rails.root.join('app', 'assets').to_path
if full_path.starts_with? app_assets_path
puts "including asset: " + full_path
true
else
puts "excluding asset: " + full_path
false
end
else
false
end
end
除了确保预编译资产之外,我还需要做些什么吗? 我的应用程序正被部署到拥有nginx和乘客的数字海洋服务器。
答案 0 :(得分:1)
我认为你的问题在这里:
background: url("<%= asset_path 'k-opacity-70.png' %>"); position: fixed; top: 0; left: 0; }
<强>辅助强>
有一个名为asset_url
的助手,强烈推荐用于CSS。我会这样做:
#app/assets/stylesheets/application.css.scss #-> notice the extension
background: asset_url("k-opacity-70.png");
这将确保您的资产被正确引用,尤其是当您将它们发送到服务器时。这可能听起来很简单,但我们之前在Heroku中遇到了问题(我知道你使用DO),因为他们的指纹不正确,文件没有呈现,
可能因此而被投票(因为它与您的代码基本相同),但它对我们有用
<强>指纹强>
其次,我会确保您的指纹图像实际存在于public/assets
文件夹
预补偿过程通常会创建一系列images
,stylesheets
&amp;必须在资产中引用的js
个文件。这是使用上面引用的助手来处理的,但这也意味着它们可能被错误引用
-
如果您的文件夹中有正确的文件,问题将是您如何引用它们,否则它将成为预编译过程本身的问题(在application.css
的职权范围内)