Как вы ActiveRecord запросов кеширования на уровне приложения? - PullRequest
1 голос
/ 11 февраля 2009

Кэширование запросов ActiveRecord включается, когда вызывается действие контроллера. Я также знаю, что вы можете сделать что-то вроде этого, чтобы временно включить кэширование для данной Модели для данного блока кода:

User.cache do  
    ....
end

Но есть ли способ включить кэширование запросов для других контекстов (например, когда скрипт запускается в среде rails, используя ./script/runner)?

Ответы [ 4 ]

3 голосов
/ 11 февраля 2009

Кэш запросов ActiveRecord действует только в течение определенного действия (т. Е. Запроса). Если вы хотите, чтобы кэшированный объект выживал дольше или использовался между процессами, вам нужно посмотреть на что-то вроде memcached.

0 голосов
/ 14 июня 2019

Чтобы получить кеширование запросов при запуске скрипта, вам нужно обернуть любой код:

ActiveRecord::Base.connection.cache do
  your_code_here
end

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

0 голосов
/ 30 марта 2009

Простое решение - заключить код, заданный для script/runner, в блок непосредственно в командной строке:

script/runner "User.cache { ... }"

Обратите внимание, что кэширование не только для модели User, но и для всех запросов, выполняемых внутри кодового блока.

0 голосов
/ 11 февраля 2009

Этот плагин сохранит кеш запросов, используя memcached.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...