Sinatra с постоянной переменной

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

13
задан berkes 22 June 2011 в 17:05
поделиться