加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

红宝石 – Sinatra与持久变量

发布时间:2020-12-16 19:44:10 所属栏目:百科 来源:网络整理
导读:我的sinatra应用程序必须解析一个?60MB的 XML文件.这个文件几乎没有变化:在每天的cron工作中,它被另一个覆盖. 是否有技巧或方法来将解析的文件保存在内存中作为变量,以便我可以从传入的请求中读取它,但不必一次又一次地分析每个传入的请求? 一些伪代码来说
我的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将在您的请求方法中可用.它是一个类变量而不是实例变量,但应该做你想要的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读