Sha256: 0eddff4b1706c12419a29a0caa9cfc16fabe6632b2cfc04fee3fc3d88cb14a8d

Contents?: true

Size: 927 Bytes

Versions: 3

Compression:

Stored size: 927 Bytes

Contents

module Draper
  module ViewContext
    def view_context
      super.tap do |context|
        Draper::ViewContext.current = context
      end
    end

    def self.current_controller
      Thread.current[:current_controller] || ApplicationController.new
    end

    def self.current_controller=(controller)
      Thread.current[:current_controller] = controller
    end

    def self.current
      Thread.current[:current_view_context] ||= build_view_context
    end

    def self.current=(context)
      Thread.current[:current_view_context] = context
    end

    def self.build_view_context
      current_controller.view_context.tap do |context|
        if defined?(ActionController::TestRequest)
          context.controller.request ||= ActionController::TestRequest.new
          context.request            ||= context.controller.request
          context.params             ||= {}
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
draper-1.0.0.beta3 lib/draper/view_context.rb
draper-1.0.0.beta2 lib/draper/view_context.rb
draper-1.0.0.beta1 lib/draper/view_context.rb