我们应该将Sprited图像保留在Asset Pipeline之外吗?

时间:2012-06-15 20:21:08

标签: ruby-on-rails asset-pipeline css-sprites compass-sass

我们使用Compass来Sprite图像(将许多图像合并为一个文件)。如果我为images / common / dir创建一个Sprite,Compass会创建一个名为common-sff832da50b.png的文件。 Compass每次重新生成Sprite时都会生成一个新的后缀。如果我将这些Sprite图像保留在app / assets / images中,我将在public / assets中看到common-sff832da50b.png和common-sff832da50b-4a575c6c5d24895370db5ee7e7648d3a.png。由于Compass管理这个文件,我认为没有理由让Asset Pipeline“管理”它。我可以通过配置Compass将这些sprite直接编译为public / assets来绕过Asset Pipeline。这有什么缺点吗?

我还应该确保编译成Sprite的“源”图像不应存储在app / assets / images中,因为Asset Pipeline也会“管理”它们。请记住,不使用这些“源”图像。该应用程序在开发和生产中使用Sprites。据我所知,资产管道没有理由将原件和原件的“摘要”复制到公共/资产。我们只在Sprite中使用它。这听起来合理吗?有缺点吗?

假设:Rails 3.2。*

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将原始图像移动到管道外的任何文件夹。或不。除了预编译所需的时间,以及在您从未引用的公共文件夹中浮动文件之外,它没有太大区别。

你必须把图像粘贴在某个地方,而且从Rails的观点来看,这似乎是阻力最小的。

关于指纹,您不需要指纹文件,因为Compass(如您所说)是指它创建的文件。

将它直接写入+ / public / assets +可能存在问题,具体取决于您部署项目的方式。

如果您使用默认的Capistrano任务,则资产文件夹将从+ shared / assets +进行符号链接,因此您需要在进行符号链接后编译精灵。