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