Second attempt at view_context fix

This commit is contained in:
Steve Klabnik 2012-10-14 12:34:47 -07:00
parent 6887ade43c
commit a54e3f3772
1 changed files with 20 additions and 3 deletions

View File

@ -1,18 +1,35 @@
module Draper
module ViewContext
def self.current
Thread.current[:current_view_context] || ApplicationController.new.view_context
Thread.current[:current_view_context] ||= build_view_context
end
def self.current=(input)
Thread.current[:current_view_context] = input
end
private
def self.build_view_context
ApplicationController.new.view_context.tap do |context|
context.instance_eval do
def url_options
ActionMailer::Base.default_url_options
end
end unless context.request
if defined?(ActionController::TestRequest)
context.controller.request ||= ActionController::TestRequest.new
context.request ||= context.controller.request
context.params ||= {}
end
end
end
end
module ViewContextFilter
def view_context
ApplicationController.new.view_context.tap do |context|
Draper::ViewContext.current = self.view_context
super.tap do |context|
Draper::ViewContext.current = context
end
end
end