From 851ce74213f96bb5cabe9469d3e38284c6aedf4d Mon Sep 17 00:00:00 2001 From: Thomas Cioppettini Date: Wed, 18 Jan 2017 20:07:48 -0500 Subject: [PATCH] refactor(Split require): Fix issue where redis isn't required. Auto require all necessary files. --- lib/split.rb | 25 ++++++------------------- lib/split/algorithms.rb | 4 ---- lib/split/alternative.rb | 6 ------ lib/split/encapsulated_helper.rb | 2 ++ lib/split/extensions.rb | 4 ---- lib/split/persistence.rb | 4 ---- lib/split/zscore.rb | 2 +- spec/experiment_spec.rb | 2 -- 8 files changed, 9 insertions(+), 40 deletions(-) delete mode 100644 lib/split/algorithms.rb delete mode 100644 lib/split/extensions.rb diff --git a/lib/split.rb b/lib/split.rb index 302bf857..01bbcebf 100755 --- a/lib/split.rb +++ b/lib/split.rb @@ -1,23 +1,10 @@ # frozen_string_literal: true -%w[algorithms - alternative - configuration - exceptions - experiment - experiment_catalog - extensions - goals_collection - helper - metric - persistence - encapsulated_helper - redis_interface - trial - user - version - zscore].each do |f| - require "split/#{f}" -end +require 'redis' + +# Auto require all files except for those that include 'dashboard' or 'engine' +Dir["#{File.expand_path(File.dirname(__FILE__))}/**/*.rb"].reject do |file| + file["dashboard"] || file["engine"] +end.each { |file| require file } require 'split/engine' if defined?(Rails) diff --git a/lib/split/algorithms.rb b/lib/split/algorithms.rb deleted file mode 100644 index fb33585d..00000000 --- a/lib/split/algorithms.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true -%w[weighted_sample whiplash].each do |f| - require "split/algorithms/#{f}" -end diff --git a/lib/split/alternative.rb b/lib/split/alternative.rb index a6b45df9..9902fa82 100644 --- a/lib/split/alternative.rb +++ b/lib/split/alternative.rb @@ -1,8 +1,4 @@ # frozen_string_literal: true -require 'split/zscore' - -# TODO - take out require and implement using file paths? - module Split class Alternative attr_accessor :name @@ -10,8 +6,6 @@ class Alternative attr_accessor :weight attr_accessor :recorded_info - include Zscore - def initialize(name, experiment_name) @experiment_name = experiment_name if Hash === name diff --git a/lib/split/encapsulated_helper.rb b/lib/split/encapsulated_helper.rb index afc59d4e..e41380f2 100644 --- a/lib/split/encapsulated_helper.rb +++ b/lib/split/encapsulated_helper.rb @@ -1,4 +1,6 @@ # 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. # diff --git a/lib/split/extensions.rb b/lib/split/extensions.rb deleted file mode 100644 index 01be01cc..00000000 --- a/lib/split/extensions.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true -%w[string].each do |f| - require "split/extensions/#{f}" -end diff --git a/lib/split/persistence.rb b/lib/split/persistence.rb index 3d3f8f0e..3cc3cefd 100644 --- a/lib/split/persistence.rb +++ b/lib/split/persistence.rb @@ -1,8 +1,4 @@ # frozen_string_literal: true -%w[session_adapter cookie_adapter redis_adapter dual_adapter].each do |f| - require "split/persistence/#{f}" -end - module Split module Persistence ADAPTERS = { diff --git a/lib/split/zscore.rb b/lib/split/zscore.rb index 0faec310..fbd84873 100644 --- a/lib/split/zscore.rb +++ b/lib/split/zscore.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true module Split - module Zscore + class Zscore include Math diff --git a/spec/experiment_spec.rb b/spec/experiment_spec.rb index f00ef1fe..01e36747 100644 --- a/spec/experiment_spec.rb +++ b/spec/experiment_spec.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true require 'spec_helper' -require 'split/experiment' -require 'split/algorithms' require 'time' describe Split::Experiment do