понедельник, 14 мая 2012 г.

Update sass с последующим использование обеих версих

По работе получил задание: обнови, говорят, нам sass с версии 3.1.10 до 3.1.16, да так, чтоб старая версия работала как и раньше, но была доступна и новая.
Ну что ж, нужно значит нужно. Оговорюсь только, что опыт обновления sass у меня кое-какой был, обновлял с 3.0.14 до 3.1.16 (просто сделав копию исполняемого файла). С этой задачей оказалось не так просто. Ну приступим...
Для начала скопируем файл /usr/bin/sass
#cp /usr/bin/sass /usr/bin/sass-3.1.16

потом просто устанавливаем нужный нам sass
#gem install sass -v 3.1.16

Раньше, когда sass был версии 3.0.x такой способ спокойно работал, потому что файлы исполняли разный код. И каждый файл имел свою определенную версию. В версии 3.1.x исходный код исполняемых файлов не меняется и в результате мы имеем
# /usr/bin/sass-3.1.16 -v
Sass 3.1.16 (Brainy Betty)
# /usr/bin/sass -v
Sass 3.1.16 (Brainy Betty)

Чтож непорядок. Немного погуглив и не найдя нормального решения был выбран самый древний метод - метод тыка. Через 25 минут "тыканья" выяснилось, что в нужном нам файле
/usr/bin/sass достаточно поменять в последней строчке
# sed -n '$ p' /usr/bin/sass 
load Gem.bin_path('sass', 'sass', version)
параметр version на нужную нам версию. У меня получилась такая строка
# sed -n '$ p' /usr/bin/sass 
load Gem.bin_path('sass', 'sass', '3.1.10')
Проверяем ...
# /usr/bin/sass -v
Sass 3.1.10 (Brainy Betty)
# /usr/bin/sass-3.1.16 -v
Sass 3.1.16 (Brainy Betty)
 Все. Тепереь можно использовать обе версии, причем приложения, использующие старую версию не заметят разницы, а тем что нужна новая версия можно прописать /usr/bin/sass-3.1.16

Комментариев нет:

Отправить комментарий