使用Vagrant进行HAML / SASS开发时的图像显示/中断问题

时间:2012-03-10 17:59:39

标签: image haml virtualbox imagesource vagrant

我正在使用Mac OSX(Snow Leopard)上的Vagrant / VirtualBox VM在本地运行的Rails应用程序进行HAML / SASS更改,每当我对图像进行更改时,我都会遇到一个非常奇怪的问题在任何HAML / SASS文件中引用。

以下是发生的事情的一个例子:

  • 我在浏览器中打开了一个本地Rails应用页面,所有图像都正确显示
  • 我重新调整图像大小(使用Gimp)使其变小并保存更改
  • 我刷新页面以查看更改并且原始图像仍然显示,但底部与我制作图像的尺寸相比成比例
  • 我从目录中删除了图像文件,并刷新页面以查看会发生什么。
  • 有时原始的截止图像仍然存在,有时会消失,我只看到丢失的图像路径图标
  • 我将图片文件移回目录以尝试强制它获取重新调整大小
  • 有时这是第一次使用,有时我必须先做3到4次才能看到正确尺寸的图像
  • 有时我看到旧的剪切图像重新出现,即使我刷新页面后看不到图像!

如果我对图像文件进行其他更改(例如,如果我使用相同的文件名保存一个全新的图像),似乎也会出现同样的问题。除了这个图像问题,对HAML / SASS文件的所有编辑都有效,我可以立即看到我的更改。

我认为这可能是某种浏览器呈现/缓存问题,但Firefox和Chrome中也会出现类似的问题。如果我使用Firebug,我有时会看到正在拾取的文件正确,但它没有显示在页面本身中。

我只能认为这与Vagrant有关。唯一可以保证完全修复它的是重新调整Vagrant盒子,但这需要很长时间。

我意识到这可能不是一个简单的问题,因为它可能与我们的Rails应用程序和Vagrant / VirtualBox的配置有关,但我只是想我会在这里发布问题以防其他人有类似的问题的问题。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可能看到的是VirtualBox共享文件夹文件系统与sendfile系统调用一起出现的问题。如果要从VirtualBox共享文件夹提供文件,则需要在Web服务器上禁用sendfile。这样做很容易:

在Apache中,将其添加到您的配置中:EnableSendfile off

在Nginx中,将其添加到您的配置中:sendfile off;