3

请有人帮忙,花了几个小时在这上面,这让我发疯。

我在 Rails 4 上,如果有帮助的话,使用 apache/passenger。我还跑了:“rake assets:precompile”并重新启动了 apache。

我在我的样式表中使用它:

background-image: url(image-path('pretty-background-image.jpg'));

在生产中,这会在 css 文件中输出:

background-image: url("/assets/pretty-background-image.jpg");

从这张票和很多乱七八糟的东西,我明白应该输出这样的东西:

background-image: url("/assets/pretty-background-image-8b313354987c309e3cd76eabdb376c1e.jpg");

但事实并非如此。我在尝试使用时遇到了同样的字体问题:

asset-url('font-name.eot')

html.erb 文件中的所有其他图像都可以正常渲染(最后带有额外的数字和字母字符串),但我的样式表中的任何内容都无法正常工作。

4

1 回答 1

1

rails 4 在资产管道方面有不兼容的变化。

我认为这些更改很好,因为它们消除了很多魔力,Rails 所做的就是保持向后兼容。

Rails 3 中真正令人讨厌的一点是rake assets:precompile工作方式。

它总是试图在生产环境中运行任务。它运行了两次以生成带有指纹和不带指纹的资产。

如今,您必须将环境传递给 rake 任务,就像RAILS_ENV=production rake assets:precompile您想在生产中生成资产一样。

新任务不会生成任何没有指纹的资产。如果你想拥有这些,你需要为此构建一些自定义的东西(在你的 capistrano 任务中从 manifest.yml 符号链接东西等)。

于 2013-09-30T17:17:15.563 回答