Ответы пользователя по тегу Тестирование ПО
  • Кэширование по книге RoR. Поможете разобраться?

    Здесь кэшируются фрагменты для каждого отдельного продукта и фрагмент для всего списка продуктов.
    def self.latest
      Product.order(:updated_at).last
    end

    - возвращает последний измененный продукт (выборка по дате обновления).

    Фрагмент для отдельного продукта, инвалидируется при изменении product:
    <% cache ['entry', product] do %>
      ...
    <% end %>

    Фрагмент для всего списка:
    <% cache ['store', Product.latest] do %>
      ...
    <% end %>

    инвалидируется при изменении Product.latest, то есть по сути при изменении любого продукта.

    При повторном обращении к коду проверяется последнее изменении продукта (Product.latest). Если изменений после кэширования не было, полный список берется из кэша. Если были - рендерится заново, при этом в цикле проверяются изменения каждого продукта и при их отсутствии фрагмент для него берется из кеша.
    Ответ написан