Мое приложение 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, чтобы он сохранялся при запуске Sinatra. Возможно ли это вообще? Или мне нужно некоторое хранилище для этого?