红宝石 – Sinatra与持久变量

前端之家收集整理的这篇文章主要介绍了红宝石 – Sinatra与持久变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的sinatra应用程序必须解析一个〜60MB的 XML文件.这个文件几乎没有变化:在每天的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运行时它会持续存在.这是可能吗还是需要一些存储?

解决方法

你可以试试:
configure do
  @@nokogiri_object = parse_xml
end

那么@@ nokogiri_object将在您的请求方法中可用.它是一个类变量而不是实例变量,但应该做你想要的.

原文链接:/ruby/271820.html

猜你在找的Ruby相关文章