Sha256: 11e3090013e9551dec96ae7dbfeefa560960d915c37427d93c6785a3ad50d3a5

Contents?: true

Size: 940 Bytes

Versions: 12

Compression:

Stored size: 940 Bytes

Contents

# frozen_string_literal: true
require "split/helper"

# Split's helper exposes all kinds of methods we don't want to
# mix into our model classes.
#
# This module exposes only two methods:
#  - ab_test()
#  - ab_finished()
# that can safely be mixed into any class.
#
# Passes the instance of the class that it's mixed into to the
# Split persistence adapter as context.
#
module Split
  module EncapsulatedHelper

    class ContextShim
      include Split::Helper
      public :ab_test, :ab_finished

      def initialize(context)
        @context = context
      end

      def ab_user
        @ab_user ||= Split::User.new(@context)
      end
    end

    def ab_test(*arguments,&block)
      split_context_shim.ab_test(*arguments,&block)
    end

    private

    # instantiate and memoize a context shim in case of multiple ab_test* calls
    def split_context_shim
      @split_context_shim ||= ContextShim.new(self)
    end
  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
ab-split-1.0.2 lib/split/encapsulated_helper.rb
ab-split-1.0.1 lib/split/encapsulated_helper.rb
ab-split-1.0.0 lib/split/encapsulated_helper.rb
split-3.4.1 lib/split/encapsulated_helper.rb
split-3.4.0 lib/split/encapsulated_helper.rb
split-3.3.2 lib/split/encapsulated_helper.rb
split-3.3.1 lib/split/encapsulated_helper.rb
split-3.3.0 lib/split/encapsulated_helper.rb
split-3.2.0 lib/split/encapsulated_helper.rb
split-3.1.1 lib/split/encapsulated_helper.rb
split-3.1.0 lib/split/encapsulated_helper.rb
split-3.0.0 lib/split/encapsulated_helper.rb