Sha256: 18f4849642cf0f0b46c7133e6a72dd7cc7523dd7d08c72900a5986b8ddee258f

Contents?: true

Size: 1.81 KB

Versions: 9

Compression:

Stored size: 1.81 KB

Contents

# frozen_string_literal: true
%w[algorithms
   alternative
   configuration
   exceptions
   experiment
   experiment_catalog
   extensions
   goals_collection
   helper
   metric
   persistence
   encapsulated_helper
   trial
   user
   version
   zscore].each do |f|
  require "split/#{f}"
end

require 'split/engine' if defined?(Rails)
require 'redis/namespace'

module Split
  extend self
  attr_accessor :configuration

  # Accepts:
  #   1. A 'hostname:port' string
  #   2. A 'hostname:port:db' string (to select the Redis db)
  #   3. A 'hostname:port/namespace' string (to set the Redis namespace)
  #   4. A redis URL string 'redis://host:port'
  #   5. An instance of `Redis`, `Redis::Client`, `Redis::DistRedis`,
  #      or `Redis::Namespace`.
  def redis=(server)
    if server.respond_to? :split
      if server["redis://"]
        redis = Redis.connect(:url => server, :thread_safe => true)
      else
        server, namespace = server.split('/', 2)
        host, port, db = server.split(':')
        redis = Redis.new(:host => host, :port => port,
          :thread_safe => true, :db => db)
      end
      namespace ||= :split

      @redis = Redis::Namespace.new(namespace, :redis => redis)
    elsif server.respond_to? :namespace=
      @redis = server
    else
      @redis = Redis::Namespace.new(:split, :redis => server)
    end
  end

  # Returns the current Redis connection. If none has been created, will
  # create a new one.
  def redis
    return @redis if @redis
    self.redis = self.configuration.redis_url
    self.redis
  end

  # Call this method to modify defaults in your initializers.
  #
  # @example
  #   Split.configure do |config|
  #     config.ignore_ip_addresses = '192.168.2.1'
  #   end
  def configure
    self.configuration ||= Configuration.new
    yield(configuration)
  end
end

Split.configure {}

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
split-2.1.0 lib/split.rb
split-2.0.0 lib/split.rb
split-1.7.0 lib/split.rb
split-1.6.0 lib/split.rb
split-1.5.0 lib/split.rb
split-1.4.5 lib/split.rb
split-1.4.4 lib/split.rb
split-1.4.3 lib/split.rb
split-1.4.2 lib/split.rb