Используйте ActiveSupport::Кэш::Хранилище файлов непосредственно в классе модели

#ruby-on-rails

#рубин на рельсах

Вопрос:

Я попытался использовать ActiveSupport::Кэш::Хранилище файлов в классе модели:

 @backend_cache = ActiveSupport::Cache::FileCache.new Rails.root.join("tmp", "cache")  

Программа сообщает об ошибке имени

 NameError: uninitialized constant ActiveSupport::Cache::FileCache Did you mean? FileTest  

Я добавил

 require "active_support" require "active_support/core_ext"  

Он все еще показывает ошибку. Я знаю, что могу использовать Рельсы.Кэш для этой цели, но объект, который я кэшировал, должен находиться на диске, который отличается от других частей приложения.

Приложение написано на Rails 6.

Комментарии:

1. Я думаю, у вас опечатка: ::FileStore.new вместо FileCache

Ответ №1:

Я попробовал это в консоли rails 6, и это работает просто отлично.

 @backend_cache = ActiveSupport::Cache::FileStore.new(Rails.root.join("tmp", "cache")) @backend_cache.write('x', 1) # =gt; true @backend_cache.read('x') # =gt; 1  

Это просто опечатка, о которой я упоминал в комментарии. Это ::FileStore.new вместо того, чтобы ::FileCache.new