1

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

我正在开发一个使用 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
4

0 回答 0