Рельсы: используйте функцию перераспределения ресурсов с помощью Asset Pipeline
Быстрый вопрос для профессионалов rails там...
При работе с приложениями Rails 3.0.x я был тяжелым пользователем Guard и LiveReload. Однако, похоже, что при использовании конвейера активов в Rails 3.1 защитник педалей не знает, что изменения в файле Sass должны инициировать отправку нового css в браузер.
Кто-нибудь использует LiveReload с Asset Pipeline? Если да, как вы это делаете?
Спасибо!
Ответы
Ответ 1
После выполнения некоторых проблем в Github я нашел следующую исправленную проблему:
1) Убедитесь, что все scss файлы названы в соответствии с новым соглашением о ресурсах, например: filename.css.scss
Я использовал scss перед Rails 3.1 и только что назвал все мои sass файлы filename.scss
.
2) Для сохранения в вашем файле защиты используйте следующую команду:
guard 'livereload' do
watch(%r{app/helpers/.+\.rb})
watch(%r{app/views/.+\.(erb|haml)})
watch(%r{(public/).+\.(css|js|html)})
watch(%r{app/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" }
watch(%r{app/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" }
watch(%r{lib/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" }
watch(%r{lib/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" }
watch(%r{vendor/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" }
watch(%r{vendor/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" }
watch(%r{config/locales/.+\.yml})
end
Ответ 2
Я тоже нашел неплохую работу:
guard :livereload do
watch(%r{^app/.+\.(erb|haml|js|css|scss|sass|coffee|eco|png|gif|jpg)})
watch(%r{^app/helpers/.+\.rb})
watch(%r{^public/.+\.html})
watch(%r{^config/locales/.+\.yml})
end
Это не код по умолчанию, который генерируется при запуске guard init livereload
по какой-то причине, которая не так хорошо работает с sass import.
Ответ 3
Как заметил в своем комментарии @mirko, дополнительные .css на scss файлах устарели. Поэтому добавление этого не является отличным решением, и я испытал, что просто добавление расширения scss приводит к перезагрузке страницы.
Итак, я обнаружил, что это работает:
watch(%r{(app|vendor)(/assets/\w+/(.+)\.(scss))}) { |m| "/assets/#{m[3]}.css" }`
Мое понимание заключается в том, что он отображает файл scss в скомпилированный файл css. Надеюсь, это сработает и для сасса.
Источник: проблема Github