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

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

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

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

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

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

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

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

Спасибо!


person Jamie Andrews    schedule 10.03.2012    source источник
comment
Возможное дублирование: stackoverflow.com/questions/9479117 /   -  person ANeves thinks SE is evil    schedule 23.10.2012


Ответы (1)


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

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

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

person Mitchell    schedule 29.03.2012
comment
Отлично, это исправление сработало отлично. Спасибо за разгадку тайны! - person Jamie Andrews; 04.05.2012