Моему приложению sinatra необходимо проанализировать XML-файл размером ~ 60 МБ. Этот файл почти никогда не изменяется: на ночной работе cron он перезаписывается другим.
Существуют ли уловки или способы сохранить проанализированный файл в памяти как переменную, чтобы я мог читать из него по входящим запросам, но не приходилось анализировать его снова и снова для каждого входящего запроса?
Псевдокод для иллюстрации моей проблемы.
get '/projects/:id'
return @nokigiri_object.search("//projects/project[@id=#{params[:id]}]/name/text()")
end
post '/projects/update'
if params[:token] == "s3cr3t"
@nokogiri_object = reparse_the_xml_file
end
end
Что мне нужно знать, так это как создать такой @nokogiri_object, чтобы он сохранялся при запуске Синатры. Это возможно вообще? Или мне для этого нужно какое-то хранилище?