使用Sinatra进行高效的对象创建?

时间:2012-06-08 20:46:52

标签: ruby sinatra jruby

首先,我是Ruby和Sinatra noob所以要温柔。

我正在使用JRuby和Sinatra在Tomcat上部署的应用程序。到目前为止,似乎进展顺利。但是,我正在努力解决在我看来是浪费资源和最终部署的应用程序的潜在时间。对于特定路由的每个请求,我创建一个连接到sqlite3数据库的对象,查询数据库然后关闭连接。我觉得创建单个对象并在路径上共享它会更有效。我想要分享的对象是AppData对象,这样当用户深入查看日志或错误的初始列表时,我可以使用相同的对象来查询详细信息视图。

post "/log" do
@date = "#{params[:date].slice!(6..9)}#{params[:date].slice!(0..1)}#{params[:date].slice!(1..2)}"
app_data = AppData.new
if params[:log_type] == 'E'
  @log_type = 'errors'
  @data = app_data.get_errors :date => @date 
  app_data.close
  erb :log
else
  @log_type = 'warnings'
  @data = app_data.get_warnings :date => @date
  app_data.close
  erb :log
end
end

#detail view
get "/log/:log_type/:date/:item" do
app_data = AppData.new
if params[:log_type] == 'errors'
  @log_type = 'errors'
  @data = app_data.get_error_orders_for_item :date => params[:date], :item => params[:item]
else
  @log_type = 'warnings'
  @data = app_data.get_warning_orders_for_item :date => params[:date], :item => params[:item]
end
  app_data.close
  erb :log_details
end

0 个答案:

没有答案