конвейер ресурсов: обслуживать специфичные для ресурса файлы scss - PullRequest
0 голосов
/ 31 октября 2011

У нас есть 3 возможных варианта:

  • пользователь не вошел в систему
  • пользователь вошел в систему
  • пользователь вошел как администратор

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

Можно ли изменить мой css.scss на css.scss.erb и затем добавить несколько помощников? Например:

Application.css.scss.erb

  # include css files for non-logged in users
  <% if signed_in? %>
    # include css files for logged in users
    <% if current_user.try(:staff_role?) %>
      # include css files for admin users
    <% end %>
  <% end %>

Таким образом, я предотвращаю добавление второго или третьего http-запроса для пользователя. Эффективное

Как это повлияет на время рендеринга? Будет ли рельсы кэшировать 3 разных файла?

1 Ответ

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

Я не думаю, что это будет работать очень хорошо. Все ваши активы будут предварительно скомпилированы в производстве, поэтому ваш ERB не будет делать то, что вы ожидаете. Любой ERB в ваших ресурсах должен быть только «уровня среды», и я имею в виду такие вещи, как пути, которые вообще не зависят от текущего состояния запроса. Вы можете использовать несколько таблиц стилей, хотя:

  • Тот, который охватывает все обычные вещи.
  • Тот, который содержит вещи для вошедших в систему пользователей (но содержимое не может зависеть от того, какой пользователь вошел в систему).
  • Один для пользователей с правами администратора (но опять же, контент не может зависеть от того, какой пользователь вошел в систему).

Затем вы включаете соответствующую таблицу стилей в свои представления.

Если по какой-то причине вам нужен CSS для каждого пользователя, вам придется использовать элементы <style> в своих представлениях и встроить его или обслуживать CSS через контроллер, чтобы вы могли надежно настроить его для каждого запроса .

...