Проблема с отображением / обрывом изображения при использовании Vagrant для разработки HAML / SASS - PullRequest
4 голосов
/ 10 марта 2012

Я делаю изменения HAML / SASS для приложения Rails, которое я запускаю локально, используя виртуальную машину Vagrant / VirtualBox на Mac OSX (Snow Leopard), и я сталкиваюсь с действительно странной проблемой всякий раз, когда я изменяю изображениеупоминается в любом из файлов HAML / SASS.

Вот пример того, что происходит:

  • Я открываю локальную страницу приложения Rails в своем браузере, и все изображения отображаются правильно
  • Я изменяю размер изображения (используя Gimp), чтобы уменьшить его и сохранить изменения
  • Я обновляю страницу, чтобы увидеть изменения, и исходное изображение все еще отображается, но с нижней частьюобрезать пропорционально тому, насколько я уменьшил изображение
  • Я удаляю файл изображения из каталога и жестко обновляю страницу, чтобы посмотреть, что произойдет.
  • Иногда исходноевыключенное изображение все еще там, иногда оно исчезает, и я просто вижу значок пути отсутствующего изображения
  • Я перемещаю файл изображения обратно в каталог, чтобы попытаться заставить его подобрать зановоing
  • Иногда это работает в первый раз, иногда мне приходится делать это 3 или 4 раза, прежде чем я вижу изображение правильного размера
  • Иногда я вижу, что старое обрезанное изображение снова появляется даже послеЯ обновил страницу и не увидел изображения!

Похоже, такая же проблема возникает при внесении других изменений в файл изображения (например, если я сохраняю совершенно новое изображение с тем же файломназвание).Помимо этой проблемы с изображениями, все изменения в файлах HAML / SASS работают, и я могу сразу увидеть свои изменения.

Я думал, что это может быть какая-то проблема с рендерингом / кэшированием в браузере, но похожие проблемы возникают в Firefox и Chrome.Если я использую Firebug, я иногда вижу, что подбирается правильный файл, но он не отображается на самой странице.

Я могу только думать, что это как-то связано с Vagrant.Единственное, что гарантированно исправит это полностью - это восстановление Vagrant box, но это занимает много времени.

Я понимаю, что это может быть не простой проблемой, так как это может иметь какое-то отношение к нашим Railsприложение и конфигурация Vagrant / VirtualBox, но я просто подумал, что опубликую эту проблему здесь на случай, если у кого-то возникнут аналогичные проблемы.

Спасибо!

1 Ответ

2 голосов
/ 29 марта 2012

Вероятно, вы видите проблему, которая есть в файловой системе общих папок VirtualBox вместе с системным вызовом sendfile. Вам необходимо отключить использование sendfile на вашем веб-сервере, если вы обслуживаете файлы из общей папки VirtualBox. Сделать это легко:

В Apache добавьте это в свою конфигурацию: EnableSendfile off

В Nginx добавьте это в свою конфигурацию: sendfile off;

...