Проблема с отображением/отключением изображения при использовании Vagrant для разработки HAML/SASS

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

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

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

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

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

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

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

Спасибо!

1 ответ

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

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

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

licensed under cc by-sa 3.0 with attribution.