Rails 3.1 Конвейер активов - зачем мне использовать помощники активов в файле SCSS? - PullRequest
1 голос
/ 31 октября 2011

Я только вхожу в конвейер активов; Я использую SASS / SCSS, но я не понимаю, почему я должен использовать помощники активов.

Например, если у меня есть CSS / SCSS без использования Asset Helper:

background-image: url('rails.png');

Это будет работать нормально, потому что и мой файл .SCSS, и изображение находятся и доступны через каталог ресурсов.

Какой смысл делать это?:

background-image: asset-url("rails.png", image);

Я понимаю, что это добавит "/ assets /" к URL, но зачем мне использовать помощники активов, если будет работать стандартный способ CSS?

Я думаю, что что-то упустил. Это как-то связано с развертыванием в производство?

1 Ответ

7 голосов
/ 31 октября 2011

Использование помощников дает вам доступ к отпечатанным URL-адресам в процессе производства.Из руководства Asset Pipeline :

В производственной среде Rails использует схему снятия отпечатков, описанную выше.По умолчанию предполагается, что ресурсы были предварительно скомпилированы и будут использоваться в качестве статических ресурсов вашим веб-сервером.

Во время фазы предварительной компиляции MD5 генерируется из содержимого скомпилированных файлов и вставляется в имена файлов по мере их записи на диск.Эти имена с отпечатками пальцев используются помощниками Rails вместо имени манифеста.

Итак, на производстве к путям добавляется MD5, и у вас есть такие вещи:

/assets/pancakes-af27b6a414e6da00003503148be9b409.png

Установив контрольные суммы, Rails может сказать браузерам, что они всегда должны кэшировать эти файлы.Затем, если вы делаете новую версию, которая меняет один из ваших активов, меняется контрольная сумма и изменяется весь путь;новый путь заставляет браузер думать, что это совершенно новый файл, поэтому он получит его снова.Без контрольных сумм вы можете легко застревать старые файлы в кешах браузера, и подобные вещи не совсем веселое время.

...