Rails использует ActiveSupport :: Cache :: MemoryStore для сохранения переменной между двумя вызовами API (методы контроллера) - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть API, в которых я хочу сохранить некоторые значения, которые будут доступны между каждым методом API, поэтому я пытаюсь использовать ActiveSupport :: Cache :: MemoryStore.Возможно, я неправильно использую MemoryStore (никогда не использовал, не могу найти для него конкретное руководство)

Правильно ли я использую MemoryStore?Похоже, это должно быть очень просто, но не может сохранить какое-либо значение.

class MyController
  # 1st API handler /post
  def first
    @cache = ActiveSupport::Cache::MemoryStore.new() if @cache.nil?
    @cache.write('shared_val', params['user_key'])
  end

  # 2nd API handler /post
  def second
    @cache = ActiveSupport::Cache::MemoryStore.new() if @cache.nil?
    saved_val = @cache.read('shared_val')
    puts "#{saved_val}"  # nil?????
  end

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

  # In config file
  config.cache_store = :memory_store

  # 1st API handler /post
  def first
    Rails.cache.write("ABC", "abc")
    check_val = Rails.cache.read('ABC')
    puts "VALUE: #{check_val}"  # shows correct 'abc'
  end

  # 2nd API handler /post
  def second
    Rails.cache.fetch("ABC")  # gets nil, why???
    Rails.cache.read("ABC)    # also nil
  end

1 Ответ

0 голосов
/ 14 декабря 2018

config.action_controller.perform_caching по умолчанию ложно.Вы должны включить его в других средах.

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