Sha256: 2b447a7693b585e4ede82d8d569132ad1d8671c3e0dc3a36b7f2638e649bff7a

Contents?: true

Size: 968 Bytes

Versions: 4

Compression:

Stored size: 968 Bytes

Contents

require 'request_store'

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

    def self.current_controller
      RequestStore.store[:current_controller] || ApplicationController.new
    end

    def self.current_controller=(controller)
      RequestStore.store[:current_controller] = controller
    end

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

    def self.current=(context)
      RequestStore.store[: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

4 entries across 4 versions & 1 rubygems

Version Path
draper-1.0.0 lib/draper/view_context.rb
draper-1.0.0.beta6 lib/draper/view_context.rb
draper-1.0.0.beta5 lib/draper/view_context.rb
draper-1.0.0.beta4 lib/draper/view_context.rb