lib/ruby_app/request.rb in RubyApp-0.0.8 vs lib/ruby_app/request.rb in RubyApp-0.0.9

- old
+ new

@@ -3,44 +3,67 @@ require 'rack' module RubyApp require 'ruby_app/application' - require 'ruby_app/mixins/delegate' + require 'ruby_app/language' + require 'ruby_app/mixins/delegate_mixin' + require 'ruby_app/mixins/render_mixin' + require 'ruby_app/session' class Request < ::Rack::Request - extend RubyApp::Mixins::Delegate + extend RubyApp::Mixins::DelegateMixin - def parameters - self.params + def language + self.fullpath =~ /^\/([^\/\?]+)/ + $1 || RubyApp::Application.options.default_language end def query ::Rack::Utils.parse_query(self.query_string) end - def language - self.fullpath =~ /^\/([^\/\?]+)/ - $1 + def parameters + self.params end def self.get Thread.current[:_request] end - def self.create(environment) - request = RubyApp::Request.new(environment) - Thread.current[:_request] = request + def self.create!(environment = RubyApp::Application.environment) + Thread.current[:_request] = RubyApp::Request.new(environment) + Thread.current[:_rendered] = {} + if block_given? begin - yield request + RubyApp::Language.load! do + RubyApp::Session.create! do + return yield + end + end ensure - Thread.current[:_request] = nil + self.destroy! end + else + begin + RubyApp::Language.load! + begin + RubyApp::Session.create! + rescue + RubyApp::Language.unload! + raise + end + rescue + self.destroy! + raise + end end + end - def self.destroy + def self.destroy! + Thread.current[:_rendered] = nil Thread.current[:_request] = nil end private