split 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +30 -0
  3. data/.csslintrc +2 -0
  4. data/.eslintignore +1 -0
  5. data/.eslintrc +213 -0
  6. data/.rubocop.yml +1156 -0
  7. data/.travis.yml +5 -2
  8. data/Appraisals +5 -4
  9. data/CHANGELOG.md +46 -0
  10. data/Gemfile +1 -0
  11. data/README.md +123 -20
  12. data/gemfiles/4.2.gemfile +1 -0
  13. data/gemfiles/5.0.gemfile +10 -0
  14. data/lib/split/algorithms/block_randomization.rb +22 -0
  15. data/lib/split/alternative.rb +29 -8
  16. data/lib/split/configuration.rb +13 -2
  17. data/lib/split/dashboard/helpers.rb +5 -1
  18. data/lib/split/dashboard/public/dashboard-filtering.js +3 -3
  19. data/lib/split/dashboard/views/_experiment.erb +35 -1
  20. data/lib/split/dashboard.rb +5 -0
  21. data/lib/split/encapsulated_helper.rb +4 -15
  22. data/lib/split/experiment.rb +63 -54
  23. data/lib/split/goals_collection.rb +1 -1
  24. data/lib/split/helper.rb +20 -0
  25. data/lib/split/persistence/dual_adapter.rb +3 -0
  26. data/lib/split/persistence.rb +5 -3
  27. data/lib/split/redis_interface.rb +51 -0
  28. data/lib/split/user.rb +3 -1
  29. data/lib/split/version.rb +1 -1
  30. data/lib/split/zscore.rb +1 -1
  31. data/lib/split.rb +34 -41
  32. data/spec/algorithms/block_randomization_spec.rb +32 -0
  33. data/spec/alternative_spec.rb +31 -0
  34. data/spec/configuration_spec.rb +19 -5
  35. data/spec/dashboard_helpers_spec.rb +14 -0
  36. data/spec/dashboard_spec.rb +15 -0
  37. data/spec/encapsulated_helper_spec.rb +35 -4
  38. data/spec/experiment_spec.rb +38 -7
  39. data/spec/helper_spec.rb +59 -16
  40. data/spec/persistence/dual_adapter_spec.rb +102 -0
  41. data/spec/redis_interface_spec.rb +111 -0
  42. data/spec/spec_helper.rb +11 -10
  43. data/spec/split_spec.rb +43 -0
  44. data/split.gemspec +2 -3
  45. metadata +23 -26
  46. data/gemfiles/4.1.gemfile +0 -8
  47. data/lib/split/algorithms.rb +0 -4
  48. data/lib/split/extensions/array.rb +0 -5
  49. data/lib/split/extensions.rb +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 979183911b308ee1272e4d98e1bd0b8c87be732d
4
- data.tar.gz: 8a4e49e77326cd94165f551b5e2080eaff78f053
3
+ metadata.gz: b0a3a695f8950186c2af7c9fd33b4201f785656a
4
+ data.tar.gz: f24adb5a893e0cac0cbf29c06ec86d9ae692c1a2
5
5
  SHA512:
6
- metadata.gz: a990656f1a7342d069565c5ed6723577b915f77df5000e2d2fd8623105f060d2e079af2ded60d9b3b46120316db35a2c2ed1d88a68218e68784797ae83c4b9e1
7
- data.tar.gz: 8c8ce0354d575b9b212c997753200b00e22eb9d379617303e3b95e14717a118182d238bd4141c0a1c9e4411e3066f503174462bac5253a35c8e19960d408f120
6
+ metadata.gz: 41138ef7911a9843cbc3fa81f78b28184087dacfff4d291d820ae32faf343fce0a9552f4d0123d647751ceadf8c1f242d44bd7e476e50a69165a49b13e422e27
7
+ data.tar.gz: c8cfabeb28e143872e7c81f5d3e4dd28f2cb9c8d274f21a31481eaa52725eed06876ef6959ad44aacb84c47f064c84953d2edffd4767951774011037aff28e96
data/.codeclimate.yml ADDED
@@ -0,0 +1,30 @@
1
+ ---
2
+ engines:
3
+ csslint:
4
+ enabled: true
5
+ duplication:
6
+ enabled: true
7
+ config:
8
+ languages:
9
+ - ruby
10
+ - javascript
11
+ - python
12
+ - php
13
+ eslint:
14
+ enabled: true
15
+ fixme:
16
+ enabled: true
17
+ rubocop:
18
+ enabled: true
19
+ ratings:
20
+ paths:
21
+ - "**.css"
22
+ - "**.inc"
23
+ - "**.js"
24
+ - "**.jsx"
25
+ - "**.module"
26
+ - "**.php"
27
+ - "**.py"
28
+ - "**.rb"
29
+ exclude_paths:
30
+ - spec/
data/.csslintrc ADDED
@@ -0,0 +1,2 @@
1
+ --exclude-exts=.min.css
2
+ --ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes
data/.eslintignore ADDED
@@ -0,0 +1 @@
1
+ **/*{.,-}min.js
data/.eslintrc ADDED
@@ -0,0 +1,213 @@
1
+ ecmaFeatures:
2
+ modules: true
3
+ jsx: true
4
+
5
+ env:
6
+ amd: true
7
+ browser: true
8
+ es6: true
9
+ jquery: true
10
+ node: true
11
+
12
+ # http://eslint.org/docs/rules/
13
+ rules:
14
+ # Possible Errors
15
+ comma-dangle: [2, never]
16
+ no-cond-assign: 2
17
+ no-console: 0
18
+ no-constant-condition: 2
19
+ no-control-regex: 2
20
+ no-debugger: 2
21
+ no-dupe-args: 2
22
+ no-dupe-keys: 2
23
+ no-duplicate-case: 2
24
+ no-empty: 2
25
+ no-empty-character-class: 2
26
+ no-ex-assign: 2
27
+ no-extra-boolean-cast: 2
28
+ no-extra-parens: 0
29
+ no-extra-semi: 2
30
+ no-func-assign: 2
31
+ no-inner-declarations: [2, functions]
32
+ no-invalid-regexp: 2
33
+ no-irregular-whitespace: 2
34
+ no-negated-in-lhs: 2
35
+ no-obj-calls: 2
36
+ no-regex-spaces: 2
37
+ no-sparse-arrays: 2
38
+ no-unexpected-multiline: 2
39
+ no-unreachable: 2
40
+ use-isnan: 2
41
+ valid-jsdoc: 0
42
+ valid-typeof: 2
43
+
44
+ # Best Practices
45
+ accessor-pairs: 2
46
+ block-scoped-var: 0
47
+ complexity: [2, 6]
48
+ consistent-return: 0
49
+ curly: 0
50
+ default-case: 0
51
+ dot-location: 0
52
+ dot-notation: 0
53
+ eqeqeq: 2
54
+ guard-for-in: 2
55
+ no-alert: 2
56
+ no-caller: 2
57
+ no-case-declarations: 2
58
+ no-div-regex: 2
59
+ no-else-return: 0
60
+ no-empty-label: 2
61
+ no-empty-pattern: 2
62
+ no-eq-null: 2
63
+ no-eval: 2
64
+ no-extend-native: 2
65
+ no-extra-bind: 2
66
+ no-fallthrough: 2
67
+ no-floating-decimal: 0
68
+ no-implicit-coercion: 0
69
+ no-implied-eval: 2
70
+ no-invalid-this: 0
71
+ no-iterator: 2
72
+ no-labels: 0
73
+ no-lone-blocks: 2
74
+ no-loop-func: 2
75
+ no-magic-number: 0
76
+ no-multi-spaces: 0
77
+ no-multi-str: 0
78
+ no-native-reassign: 2
79
+ no-new-func: 2
80
+ no-new-wrappers: 2
81
+ no-new: 2
82
+ no-octal-escape: 2
83
+ no-octal: 2
84
+ no-proto: 2
85
+ no-redeclare: 2
86
+ no-return-assign: 2
87
+ no-script-url: 2
88
+ no-self-compare: 2
89
+ no-sequences: 0
90
+ no-throw-literal: 0
91
+ no-unused-expressions: 2
92
+ no-useless-call: 2
93
+ no-useless-concat: 2
94
+ no-void: 2
95
+ no-warning-comments: 0
96
+ no-with: 2
97
+ radix: 2
98
+ vars-on-top: 0
99
+ wrap-iife: 2
100
+ yoda: 0
101
+
102
+ # Strict
103
+ strict: 0
104
+
105
+ # Variables
106
+ init-declarations: 0
107
+ no-catch-shadow: 2
108
+ no-delete-var: 2
109
+ no-label-var: 2
110
+ no-shadow-restricted-names: 2
111
+ no-shadow: 0
112
+ no-undef-init: 2
113
+ no-undef: 0
114
+ no-undefined: 0
115
+ no-unused-vars: 0
116
+ no-use-before-define: 0
117
+
118
+ # Node.js and CommonJS
119
+ callback-return: 2
120
+ global-require: 2
121
+ handle-callback-err: 2
122
+ no-mixed-requires: 0
123
+ no-new-require: 0
124
+ no-path-concat: 2
125
+ no-process-exit: 2
126
+ no-restricted-modules: 0
127
+ no-sync: 0
128
+
129
+ # Stylistic Issues
130
+ array-bracket-spacing: 0
131
+ block-spacing: 0
132
+ brace-style: 0
133
+ camelcase: 0
134
+ comma-spacing: 0
135
+ comma-style: 0
136
+ computed-property-spacing: 0
137
+ consistent-this: 0
138
+ eol-last: 0
139
+ func-names: 0
140
+ func-style: 0
141
+ id-length: 0
142
+ id-match: 0
143
+ indent: 0
144
+ jsx-quotes: 0
145
+ key-spacing: 0
146
+ linebreak-style: 0
147
+ lines-around-comment: 0
148
+ max-depth: 0
149
+ max-len: 0
150
+ max-nested-callbacks: 0
151
+ max-params: 0
152
+ max-statements: [2, 30]
153
+ new-cap: 0
154
+ new-parens: 0
155
+ newline-after-var: 0
156
+ no-array-constructor: 0
157
+ no-bitwise: 0
158
+ no-continue: 0
159
+ no-inline-comments: 0
160
+ no-lonely-if: 0
161
+ no-mixed-spaces-and-tabs: 0
162
+ no-multiple-empty-lines: 0
163
+ no-negated-condition: 0
164
+ no-nested-ternary: 0
165
+ no-new-object: 0
166
+ no-plusplus: 0
167
+ no-restricted-syntax: 0
168
+ no-spaced-func: 0
169
+ no-ternary: 0
170
+ no-trailing-spaces: 0
171
+ no-underscore-dangle: 0
172
+ no-unneeded-ternary: 0
173
+ object-curly-spacing: 0
174
+ one-var: 0
175
+ operator-assignment: 0
176
+ operator-linebreak: 0
177
+ padded-blocks: 0
178
+ quote-props: 0
179
+ quotes: 0
180
+ require-jsdoc: 0
181
+ semi-spacing: 0
182
+ semi: 0
183
+ sort-vars: 0
184
+ space-after-keywords: 0
185
+ space-before-blocks: 0
186
+ space-before-function-paren: 0
187
+ space-before-keywords: 0
188
+ space-in-parens: 0
189
+ space-infix-ops: 0
190
+ space-return-throw-case: 0
191
+ space-unary-ops: 0
192
+ spaced-comment: 0
193
+ wrap-regex: 0
194
+
195
+ # ECMAScript 6
196
+ arrow-body-style: 0
197
+ arrow-parens: 0
198
+ arrow-spacing: 0
199
+ constructor-super: 0
200
+ generator-star-spacing: 0
201
+ no-arrow-condition: 0
202
+ no-class-assign: 0
203
+ no-const-assign: 0
204
+ no-dupe-class-members: 0
205
+ no-this-before-super: 0
206
+ no-var: 0
207
+ object-shorthand: 0
208
+ prefer-arrow-callback: 0
209
+ prefer-const: 0
210
+ prefer-reflect: 0
211
+ prefer-spread: 0
212
+ prefer-template: 0
213
+ require-yield: 0