Постоянные ресурсы в приложении rails - PullRequest
1 голос
/ 26 апреля 2011

Во-первых, это может быть не самый лучший заголовок, но, похоже, сейчас это имеет смысл.

Я смотрю на загрузку ресурса, который должен существовать для жизни веб-приложения. На более позднем этапе может быть подготовлено некоторое обновление вручную, но в настоящее время это не так.

У нас есть сложная структура разрешений, которая находится в базе данных по нескольким причинам. Я не хочу нести расходы на получение этой информации для каждой загрузки страницы, поэтому я хочу, чтобы она находилась в памяти. Мой первый инстинкт - создать синглтон, в который я загружаю его, и использую его всякий раз, когда нужно найти разрешение. Я понимаю нерешительность в отношении синглетонов и удивляюсь, если это плохой подход.

Я не хочу идти по пути yaml или другого механизма хранения, разрешения должны находиться в БД для других зависимостей. Тем не менее, в Rails, что было бы наиболее подходящим способом для эффективной загрузки и чтения данных?

Ответы [ 2 ]

3 голосов
/ 26 апреля 2011

Звучит как идеальное использование кеша

permissions = Rails.cache.fetch( 'permissions' ) do
  # Permissions don't exist yet, perform long operation and load from DB
  load_permissions_from_db
end

Подробнее здесь .

0 голосов
/ 26 апреля 2011

Я не совсем уверен, что вы имеете в виду, но я думаю, что есть несколько способов кэширования

  • (например, caches_page :page или caches_action :action в контроллере)
  • или, возможно, что-то хранить в файле cookie / данных сеанса, конечно, я не совсем понимаю природу этих данных, поэтому я не знаю, что будет лучше, если вообще
...