Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Гем для кеширования общих данных 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 добавьте в Capfile:
require 'common_data_caching/capistrano'
FAQs
Unknown package
We found that common-data-caching demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.