Sha256: 8a86b28274226dedc1722e8d95e925bf707ce8b182aaf543824260f89e164c2d

Contents?: true

Size: 1.22 KB

Versions: 2

Compression:

Stored size: 1.22 KB

Contents

class Gon
  module Helpers

    def self.included base
      base.send(:include, InstanceMethods)
    end

    module InstanceMethods

      def include_gon(options = {})
        if variables_for_request_present?
          Gon::Base.render_data(options)
        elsif Gon.global.all_variables.present?
          Gon.clear
          Gon::Base.render_data(options)
        elsif options[:init].present?
          Gon.clear
          Gon::Base.render_data(options)
        else
          ''
        end
      end

      private

      def variables_for_request_present?
        current_gon && current_gon.gon
      end

      def current_gon
        RequestStore.store[:gon]
      end

    end
  end

  module GonHelpers

    def gon
      if wrong_gon_request?
        gon_request = Request.new(env)
        gon_request.id = gon_request_uuid
        RequestStore.store[:gon] = gon_request
      end
      Gon
    end

    private

    def wrong_gon_request?
      current_gon.blank? || current_gon.id != gon_request_uuid
    end

    def current_gon
      RequestStore.store[:gon]
    end

    def gon_request_uuid
      request.uuid
    end

  end
end

ActionView::Base.send :include, Gon::Helpers
ActionController::Base.send :include, Gon::GonHelpers

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gon-5.1.1 lib/gon/helpers.rb
gon-5.1.0 lib/gon/helpers.rb