まず、私はルビーとシナトラの初心者なので、優しくしてください。
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