Через инициализатор Rails 5.2.1 я импортирую customers.json
в модель без таблиц без использования функций БД.Эти данные JSON должны быть загружены в память один раз при запуске Rails, а затем доступны по мере необходимости во всем приложении.При перезапуске приложения оно перезагружается снова.
Что я сделал до сих пор:
initializers/json_loader.rb
data = JSON.parse(File.read('tmp/customers.json'), symbolize_names: true)
JSONDatastore.new(data) # load into model
app/models/json_datastore.rb
class JSONDatastore
def initialize(records)
@records = records
end
def self.records
return @records
end
end
Проблема: когда я делаю это таким образом, в контроллерах я не могу получить заполненный экземпляр JSONDatastore, который был установлен в инициализаторе.Он заполнен данными JSON в инициализаторе, но когда я пытаюсь получить к нему доступ в другом контроллере, вызывая JSONDatastore.records
, я получаю nil
, даже если я установил config.cache_classes = true
Есть ли способ для меняполучить этот экземпляр JSONDatastore
заполненный инициализатор и получить к нему доступ в моих контроллерах?Я попытался сделать мою модель одиночной и мог получить экземпляр через JSONDatastore.instance
, но @records
снова был nil
.