Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

common-data-caching

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

common-data-caching

  • 1.3.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Common Data Caching

Gem Version

Гем для кеширования общих данных Rails.

Часто в проектах Rails приходится формировать списки объектов для их дальнейшей обработки фронтендом (например отображение опций в селектах).

Подобные коллекции могут вызываться очень часто. И, чтобы не нагружать БД, лучше их кешировать.

Этот гем предназначен для простого кеширования необходимых данных и получения готовых кешированных коллекций.

Установка

Добавить в Gemfile

gem 'common-data-caching'

И выполнить:

bundle

Использование

Добавьте вызов common_cache на моделях, передав обязательную опцию attrs со списком атрибутов, которые должны быть в закешированной коллекции (id будет добавлен по умолчанию, добавлять его не обязательно):

class User < ActiveRecord::Base
  common_cache attrs: %i[email name]
end

Коллекция кеша будет обновляться после каждого изменения записи модели - создании, обновлении, удалении.

Для получения коллекции кеша общих данных вызовите метод common_data_cache_collection:

User.common_data_cache_collection

Для получения версий коллекций кеша общих данных вызовите:

CommonDataCaching.versions

При необходимости, чтобы не обновлять кеш при создании или редактировании определенной записи, передайте skip_common_data_caching: true в качестве аргумента:

User.create(email: "user@example.com", skip_common_data_caching: true)

User.find(1).update(name: "User", skip_common_data_caching: true)

Сортировка

Для применения сортировки, передайте опцию order:

class User < ActiveRecord::Base
  common_cache attrs: %i[email name],
               order: 'name desc'
end

Значение опции order должно соответствовать тем же значениям, которые принимает метод .order ActiveRecord.

По умолчанию, сортировка осуществляется по id в направлении ASC, до тех пор пока не будет передан order.

Фильтрация

Для применения фильтрации/ограничений записей, из которых будет сформирована закешированная коллекция, передайте опцию scope:

class User < ActiveRecord::Base
  common_cache attrs: %i[email name],
               scope: proc { where(role: 'admin') }
end

Значение опции scope должно быть условием where ActiveRecord, Rails скоупом или их последовательностью, которые необходимо обернуть в proc.

По умолчанию, фильтрация не применяется, до тех пор пока не будет передан scope.

Массовое обновление коллекций

Для массового обновления всех коллекций воспользутесь Rake таском:

rake common_data_caching:update_cache

Capistrano

Для обновления кеша общих данных при каждом деплое с помощью Capistrano добавьте в Capfile:

require 'common_data_caching/capistrano'

FAQs

Package last updated on 11 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc