Проверка CSS в контроллере rails или в обычном ruby? - PullRequest
0 голосов
/ 18 октября 2011

Мне нужно взять текстовое поле базы данных и разобрать его на

  1. дублирование и мусор
  2. злоба
  3. селекторы из белого списка
  4. сжатие и вывод в виде файла CSS

Так как могут быть рельсы, о которых я не знаю, или что-то готовое, я спрашиваю, прежде чем тратить время на попытки изобретать колесо. Мой поиск ничего не выявил, в основном в рельсах, кажется, нацелен на уровень просмотра, и css, кажется, является нишей, оставленной без присмотра в этой области (хотя много html).

Я знаю о самоочищающемся геме (не выполняет css сразу, еще одна вещь, которую мне нужно было бы наметить и кодировать) и о встроенных рельсах (не так много учебников, направленных в основном на представление уровень). Мне нужен гем, библиотека, модуль или что-то подобное, с чем я могу работать в контроллере или очереди.

EDIT:

Не вдаваясь слишком в специфику проекта: административные пользователи могут добавлять CSS для своих частей сайта. В рамках этого процесса я собираюсь сохранить необработанный CSS, а затем обработать и сохранить обработанный CSS. БД в основном архивная, файл css выводится немедленно. Поскольку есть немного мест, где можно добавить модифицированный CSS, и только администраторы имеют доступ к CSS, это вроде работает, но я надеюсь сделать его более надежным в будущем, когда администраторы могут быть не настолько осведомлены о потребностях безопасности или нет css осведомлен может работать.

Самый простой пример - это просто текстовое поле на странице администратора. Администратор вырезает и вставляет туда CSS, отправляет, и приложение превращает его в файл CSS, который включается в назначенные страницы, и работает, потому что нынешние администраторы знают приложение, CSS приложения, и что они могут и не могут изменить , Цель состоит в том, чтобы сделать это более надежным для будущих администраторов, которые могут быть не такими опытными.

1 Ответ

0 голосов
/ 18 октября 2011

Чтобы просто санировать CSS, вы можете использовать SanitizeHelper, встроенный в Rails: http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-sanitize_css


Вы смотрели на Sass?В него встроена вся логика синтаксического анализа для расширенного набора CSS.Вы можете добавить функцию (поддержка Sass) и избавить себя от необходимости разбирать / проверять CSS все сразу.

Вы можете генерировать выходной CSS из Sass (или просто из CSS, поскольку Sass [с синтаксисом SCSS] является полностью обратно совместимым расширенным набором CSS), например:

output_css = Sass::Engine.new(sass_content, :syntax => :scss).render

Есть множество вариантов, которые вы, вероятно, захотите посмотреть на http://sass -lang.com /


Другой вариант - Меньше.Новая платформа Twitter Bootstrap использует Less, а Rails 3.1 использует Sass.Самое большое отличие состоит в том, что официальный синтаксический анализатор / компилятор Less построен на JavaScript, так что вы можете фактически проверять и компилировать его в браузере пользователя во время его работы и показывать им любые ошибки до , которые они сохраняют.Конечно, тогда вам нужно запустить движок JavaScript (например, V8) в вашем приложении Rails, если вы хотите использовать Less для проверки входящего CSS еще.

...