test_track_rails_client 4.0.0.alpha26 → 4.0.0.alpha27

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +18 -0
  3. data/Rakefile +1 -1
  4. data/app/controllers/tt/api/{v1/application_controller.rb → application_controller.rb} +1 -1
  5. data/app/controllers/tt/api/v1/assignments_controller.rb +1 -1
  6. data/app/controllers/tt/api/v1/identifier_types_controller.rb +1 -1
  7. data/app/controllers/tt/api/v1/identifier_visitors_controller.rb +1 -1
  8. data/app/controllers/tt/api/v1/identifiers_controller.rb +1 -1
  9. data/app/controllers/tt/api/v1/resets_controller.rb +1 -1
  10. data/app/controllers/tt/api/v1/split_configs_controller.rb +1 -1
  11. data/app/controllers/tt/api/v1/split_details_controller.rb +1 -1
  12. data/app/controllers/tt/api/v1/visitor_details_controller.rb +1 -1
  13. data/app/controllers/tt/api/v1/visitors_controller.rb +1 -1
  14. data/app/models/test_track/ab_configuration.rb +2 -2
  15. data/app/models/test_track/fake/split_registry.rb +11 -6
  16. data/app/models/test_track/fake/visitor.rb +2 -1
  17. data/app/models/test_track/fake_server.rb +0 -4
  18. data/app/models/test_track/misconfiguration_notifier.rb +27 -8
  19. data/app/models/test_track/notify_assignment_job.rb +23 -2
  20. data/app/models/test_track/remote/split_registry.rb +34 -24
  21. data/app/models/test_track/session.rb +1 -1
  22. data/app/models/test_track/variant_calculator.rb +2 -1
  23. data/app/models/test_track/vary_dsl.rb +2 -2
  24. data/app/models/test_track/visitor.rb +7 -1
  25. data/config/routes.rb +0 -2
  26. data/lib/test_track.rb +23 -3
  27. data/lib/test_track_rails_client/assignment_helper.rb +5 -3
  28. data/lib/test_track_rails_client/engine.rb +11 -2
  29. data/lib/test_track_rails_client/version.rb +1 -1
  30. data/vendor/bin/testtrack-cli/testtrack.darwin +0 -0
  31. data/vendor/bin/testtrack-cli/testtrack.linux +0 -0
  32. metadata +3 -33
  33. data/app/controllers/tt/api/v1/split_registries_controller.rb +0 -5
  34. data/app/views/tt/api/v1/split_registries/show.json.jbuilder +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 596ff103f610714c46450cfe9fd4af2ebad9801d
4
- data.tar.gz: 16a03db5fd2c1e88e59b3e9faa3e1ab2c9048fb5
3
+ metadata.gz: 25d6337d0be0cd4ab5f7bb3206ac57abcf4751a9
4
+ data.tar.gz: 607743ae3522be134d2842a65e854e0ea698efd1
5
5
  SHA512:
6
- metadata.gz: 30875ae214ce8afe195a4bc11036d42689c7ff5a8b520921180eb9ae5e9599141520d90c5e97058b65389b62267a13c9185729b72f30e86e7af0be8319c5e1fd
7
- data.tar.gz: 9991fc8a58eb4f94243632279ba2304979acd46270048d01ba32ec1cd3622844eead1b9e26d4945991b2245c0034c09b7dee4affa4126b6538178270c177ec44
6
+ metadata.gz: f3580d4074be4b74748b652abb5559b7147fb26bc1e65e81ee012a3524df94452d68d7283440f56a2b566e597507febff35bed687e34383a6c7653a4a8e33398
7
+ data.tar.gz: 940014bb4d6506d5f1dabf26924a5d76239b7924f153565170a3444862a8e40651fe5a7962769030c150feef132cc43dfe701cbe14ddc220ae431772b75062b2
data/README.md CHANGED
@@ -369,6 +369,24 @@ mixpanel.init('YOUR MIXPANEL TOKEN', {
369
369
  });
370
370
  ```
371
371
 
372
+ ## Misconfiguration notifications
373
+
374
+ TestTrack provides hooks to easily integrate with your preferred error catching tool to receive notifications when we detect a misconfiguration in split usage. TestTrack has built-in support for `Airbrake`. By default, if you've included the `airbrake` gem, TestTrack will use `Airbrake` as a misconfiguration notifier backend. If you wish to use another tool, you can set the `misconfiguration_notifier` attribute on `TestTrack` with your custom client. You should do this in a Rails initializer.
375
+
376
+ ```ruby
377
+ # config/initializers/test_track.rb
378
+ TestTrack.misconfiguration_notifier = MyCustomMisconfigurationNotifier.new
379
+ ```
380
+
381
+ Your client must implement the following methods:
382
+
383
+ ```ruby
384
+ # Called when a Split misconfiguration is detected
385
+ #
386
+ # @param string message describing the misconfiguration
387
+ def notify(message)
388
+ ```
389
+
372
390
  ## Upgrading
373
391
 
374
392
  ### From 3.0 to 4.0
data/Rakefile CHANGED
@@ -33,7 +33,7 @@ task :vendor_deps do
33
33
  sh 'cp', 'bower_components/test_track_js_client/dist/testTrack.bundle.min.js', 'app/assets/javascripts'
34
34
 
35
35
  # Download testtrack-cli
36
- TEST_TRACK_CLI_VERSION = 'v0.9.7'.freeze
36
+ TEST_TRACK_CLI_VERSION = 'v1.0.0'.freeze
37
37
 
38
38
  FileUtils.module_eval do
39
39
  mkdir_p 'vendor/bin/testtrack-cli'
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::ApplicationController < ActionController::Base
1
+ class Tt::Api::ApplicationController < ActionController::Base
2
2
  before_action :return_json
3
3
 
4
4
  private
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::AssignmentsController < Tt::Api::V1::ApplicationController
1
+ class Tt::Api::V1::AssignmentsController < Tt::Api::ApplicationController
2
2
  def create
3
3
  head :no_content
4
4
  end
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::IdentifierTypesController < Tt::Api::V1::ApplicationController
1
+ class Tt::Api::V1::IdentifierTypesController < Tt::Api::ApplicationController
2
2
  def create
3
3
  head :no_content
4
4
  end
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::IdentifierVisitorsController < Tt::Api::V1::ApplicationController
1
+ class Tt::Api::V1::IdentifierVisitorsController < Tt::Api::ApplicationController
2
2
  def show
3
3
  @visitor = TestTrack::FakeServer.visitor
4
4
  end
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::IdentifiersController < Tt::Api::V1::ApplicationController
1
+ class Tt::Api::V1::IdentifiersController < Tt::Api::ApplicationController
2
2
  def create
3
3
  @visitor = TestTrack::FakeServer.visitor
4
4
  end
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::ResetsController < Tt::Api::V1::ApplicationController
1
+ class Tt::Api::V1::ResetsController < Tt::Api::ApplicationController
2
2
  def update
3
3
  TestTrack::FakeServer.reset!(seed)
4
4
  head :no_content
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::SplitConfigsController < Tt::Api::V1::ApplicationController
1
+ class Tt::Api::V1::SplitConfigsController < Tt::Api::ApplicationController
2
2
  def create
3
3
  head :no_content
4
4
  end
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::SplitDetailsController < Tt::Api::V1::ApplicationController
1
+ class Tt::Api::V1::SplitDetailsController < Tt::Api::ApplicationController
2
2
  def show
3
3
  @split_detail = TestTrack::FakeServer.split_details(params[:id])
4
4
  end
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::VisitorDetailsController < Tt::Api::V1::ApplicationController
1
+ class Tt::Api::V1::VisitorDetailsController < Tt::Api::ApplicationController
2
2
  def show
3
3
  render json: TestTrack::FakeServer.visitor_details
4
4
  end
@@ -1,4 +1,4 @@
1
- class Tt::Api::V1::VisitorsController < Tt::Api::V1::ApplicationController
1
+ class Tt::Api::V1::VisitorsController < Tt::Api::ApplicationController
2
2
  def show
3
3
  @visitor = TestTrack::FakeServer.visitor
4
4
  end
@@ -42,7 +42,7 @@ class TestTrack::ABConfiguration
42
42
  end
43
43
 
44
44
  def split
45
- split_registry && split_registry[split_name]
45
+ split_registry && split_registry['splits'][split_name] && split_registry['splits'][split_name]['weights']
46
46
  end
47
47
 
48
48
  def split_variants
@@ -58,6 +58,6 @@ class TestTrack::ABConfiguration
58
58
  end
59
59
 
60
60
  def misconfiguration_notifier
61
- @misconfiguration_notifier ||= TestTrack::MisconfigurationNotifier.new
61
+ @misconfiguration_notifier ||= TestTrack.misconfiguration_notifier
62
62
  end
63
63
  end
@@ -5,13 +5,17 @@ class TestTrack::Fake::SplitRegistry
5
5
  @instance ||= new
6
6
  end
7
7
 
8
+ def self.reset!
9
+ @instance = nil
10
+ end
11
+
8
12
  def to_h
9
- @to_h ||= splits_with_deterministic_weights
13
+ @to_h ||= split_registry_with_deterministic_weights
10
14
  end
11
15
 
12
16
  def splits
13
- to_h.map do |split, registry|
14
- Split.new(split, registry)
17
+ to_h['splits'].map do |split_name, registry|
18
+ Split.new(split_name, registry['weights'])
15
19
  end
16
20
  end
17
21
 
@@ -63,8 +67,8 @@ class TestTrack::Fake::SplitRegistry
63
67
  ENV["TEST_TRACK_SCHEMA_FILE_PATH"] || Rails.root.join('db', 'test_track_schema.yml').to_s
64
68
  end
65
69
 
66
- def splits_with_deterministic_weights
67
- split_hash.each_with_object({}) do |(split_name, weighting_registry), split_registry|
70
+ def split_registry_with_deterministic_weights
71
+ splits = split_hash.each_with_object({}) do |(split_name, weighting_registry), result|
68
72
  default_variant = weighting_registry.keys.sort.first
69
73
 
70
74
  adjusted_weights = { default_variant => 100 }
@@ -72,7 +76,8 @@ class TestTrack::Fake::SplitRegistry
72
76
  adjusted_weights[variant] = 0
73
77
  end
74
78
 
75
- split_registry[split_name] = adjusted_weights
79
+ result[split_name] = { 'weights' => adjusted_weights, 'feature_gate' => split_name.end_with?('_enabled') }
76
80
  end
81
+ { 'splits' => splits, 'experience_sampling_weight' => 1 }
77
82
  end
78
83
  end
@@ -9,6 +9,7 @@ class TestTrack::Fake::Visitor
9
9
 
10
10
  def self.reset!
11
11
  @instance = nil
12
+ TestTrack::Fake::SplitRegistry.reset!
12
13
  end
13
14
 
14
15
  def initialize(id)
@@ -26,7 +27,7 @@ class TestTrack::Fake::Visitor
26
27
  private
27
28
 
28
29
  def _assignments
29
- split_registry.keys.map do |split_name|
30
+ split_registry['splits'].keys.map do |split_name|
30
31
  variant = TestTrack::VariantCalculator.new(visitor: self, split_name: split_name).variant
31
32
  Assignment.new(split_name, variant, false, "the_context")
32
33
  end
@@ -1,9 +1,5 @@
1
1
  class TestTrack::FakeServer
2
2
  class << self
3
- def split_registry
4
- TestTrack::Fake::SplitRegistry.instance.splits
5
- end
6
-
7
3
  def split_details(name)
8
4
  TestTrack::Fake::SplitDetail.new(name).details
9
5
  end
@@ -1,13 +1,32 @@
1
- class TestTrack::MisconfigurationNotifier
2
- def notify(msg)
3
- raise msg if Rails.env.development?
1
+ module TestTrack::MisconfigurationNotifier
2
+ class Wrapper
3
+ attr_reader :underlying
4
4
 
5
- Rails.logger.error(msg)
5
+ def initialize(underlying = Null.new)
6
+ @underlying = underlying
7
+ end
8
+
9
+ def notify(msg)
10
+ raise msg if Rails.env.development?
11
+
12
+ Rails.logger.error(msg)
13
+
14
+ underlying.notify(msg)
15
+ end
16
+ end
17
+
18
+ class Null
19
+ def notify(_); end
20
+ end
6
21
 
7
- if Airbrake.respond_to?(:notify_or_ignore)
8
- Airbrake.notify_or_ignore(StandardError.new, error_message: msg)
9
- else
10
- Airbrake.notify(StandardError.new, error_message: msg)
22
+ class Airbrake
23
+ def notify(msg)
24
+ raise "Aibrake was configured but not found" unless defined?(::Airbrake)
25
+ if ::Airbrake.respond_to?(:notify_or_ignore)
26
+ ::Airbrake.notify_or_ignore(StandardError.new, error_message: msg)
27
+ else
28
+ ::Airbrake.notify(StandardError.new, error_message: msg)
29
+ end
11
30
  end
12
31
  end
13
32
  end
@@ -12,7 +12,7 @@ class TestTrack::NotifyAssignmentJob
12
12
  end
13
13
 
14
14
  def perform
15
- tracking_result = track
15
+ tracking_result = maybe_track
16
16
  unless assignment.feature_gate?
17
17
  TestTrack::Remote::AssignmentEvent.create!(
18
18
  visitor_id: visitor_id,
@@ -25,9 +25,30 @@ class TestTrack::NotifyAssignmentJob
25
25
 
26
26
  private
27
27
 
28
- def track
28
+ def maybe_track
29
29
  return "failure" unless TestTrack.enabled?
30
+ return "success" if skip_analytics_event?
30
31
  result = TestTrack.analytics.track(TestTrack::AnalyticsEvent.new(visitor_id, assignment))
31
32
  result ? "success" : "failure"
32
33
  end
34
+
35
+ def skip_analytics_event?
36
+ assignment.feature_gate? && skip_experience_event?
37
+ end
38
+
39
+ def skip_experience_event?
40
+ skip_all_experience_events? || !sample_event?
41
+ end
42
+
43
+ def skip_all_experience_events?
44
+ experience_sampling_weight.zero?
45
+ end
46
+
47
+ def experience_sampling_weight
48
+ @experience_sampling_weight ||= TestTrack::Remote::SplitRegistry.experience_sampling_weight
49
+ end
50
+
51
+ def sample_event?
52
+ Kernel.rand(experience_sampling_weight).zero?
53
+ end
33
54
  end
@@ -3,35 +3,45 @@ class TestTrack::Remote::SplitRegistry
3
3
 
4
4
  CACHE_KEY = 'test_track_split_registry'.freeze
5
5
 
6
- collection_path '/api/v1/split_registry'
6
+ collection_path '/api/v2/split_registry'
7
7
 
8
- def self.fake_instance_attributes(_)
9
- ::TestTrack::Fake::SplitRegistry.instance.to_h
10
- end
8
+ class << self
9
+ def fake_instance_attributes(_)
10
+ ::TestTrack::Fake::SplitRegistry.instance.to_h
11
+ end
11
12
 
12
- def self.instance
13
- # TODO: FakeableHer needs to make this faking a feature of `get`
14
- if faked?
15
- new(fake_instance_attributes(nil))
16
- else
17
- get('/api/v1/split_registry')
13
+ def instance
14
+ # TODO: FakeableHer needs to make this faking a feature of `get`
15
+ if faked?
16
+ new(fake_instance_attributes(nil))
17
+ else
18
+ get('/api/v2/split_registry')
19
+ end
18
20
  end
19
- end
20
21
 
21
- def self.reset
22
- Rails.cache.delete(CACHE_KEY)
23
- end
22
+ def reset
23
+ Rails.cache.delete(CACHE_KEY)
24
+ end
25
+
26
+ def to_hash
27
+ if faked?
28
+ instance.attributes.freeze
29
+ else
30
+ fetch_cache { instance.attributes }.freeze
31
+ end
32
+ rescue *TestTrack::SERVER_ERRORS => e
33
+ Rails.logger.error "TestTrack failed to load split registry. #{e}"
34
+ fetch_cache { nil } # cache the missing registry for 5 seconds if we can't get one
35
+ end
36
+
37
+ def experience_sampling_weight
38
+ to_hash.fetch('experience_sampling_weight')
39
+ end
40
+
41
+ private
24
42
 
25
- def self.to_hash
26
- if faked?
27
- instance.attributes.freeze
28
- else
29
- Rails.cache.fetch(CACHE_KEY, expires_in: 5.seconds) {
30
- instance.attributes
31
- }.freeze
43
+ def fetch_cache(&block)
44
+ Rails.cache.fetch(CACHE_KEY, expires_in: 5.seconds, &block)
32
45
  end
33
- rescue *TestTrack::SERVER_ERRORS => e
34
- Rails.logger.error "TestTrack failed to load split registry. #{e}"
35
- nil # if we can't get a split registry
36
46
  end
37
47
  end
@@ -31,7 +31,7 @@ class TestTrack::Session
31
31
  url: TestTrack.url,
32
32
  cookieDomain: cookie_domain,
33
33
  cookieName: visitor_cookie_name,
34
- registry: current_visitor.split_registry,
34
+ registry: current_visitor.v1_split_registry,
35
35
  assignments: current_visitor.assignment_json
36
36
  }
37
37
  end
@@ -31,7 +31,8 @@ class TestTrack::VariantCalculator
31
31
  end
32
32
 
33
33
  def weighting
34
- @weighting ||= split_registry[split_name] || raise("TestTrack split '#{split_name}' not found. Need to write/run a migration?")
34
+ @weighting ||= (split_registry['splits'][split_name] && split_registry['splits'][split_name]['weights']) ||
35
+ raise("TestTrack split '#{split_name}' not found. Need to write/run a migration?")
35
36
  end
36
37
 
37
38
  def assignment_bucket
@@ -34,7 +34,7 @@ class TestTrack::VaryDSL
34
34
  delegate :split_name, to: :assignment
35
35
 
36
36
  def split
37
- split_registry && split_registry[split_name]
37
+ split_registry && split_registry['splits'][split_name] && split_registry['splits'][split_name]['weights']
38
38
  end
39
39
 
40
40
  def split_variants
@@ -46,7 +46,7 @@ class TestTrack::VaryDSL
46
46
  end
47
47
 
48
48
  def misconfiguration_notifier
49
- @misconfiguration_notifier ||= TestTrack::MisconfigurationNotifier.new
49
+ @misconfiguration_notifier ||= TestTrack.misconfiguration_notifier
50
50
  end
51
51
 
52
52
  def variant_behaviors
@@ -67,6 +67,12 @@ class TestTrack::Visitor
67
67
  @split_registry ||= TestTrack::Remote::SplitRegistry.to_hash
68
68
  end
69
69
 
70
+ def v1_split_registry
71
+ @v1_split_registry ||= split_registry && split_registry['splits'].each_with_object({}) do |(k, v), result|
72
+ result[k] = v['weights']
73
+ end
74
+ end
75
+
70
76
  def link_identity!(identity)
71
77
  opts = identifier_opts(identity)
72
78
  begin
@@ -154,6 +160,6 @@ class TestTrack::Visitor
154
160
  app_name = URI.parse(TestTrack.private_url).user
155
161
  split_name = split_name.to_s
156
162
  prefixed = "#{app_name}.#{split_name}"
157
- split_registry.key?(prefixed) ? prefixed : split_name
163
+ split_registry['splits'].key?(prefixed) ? prefixed : split_name
158
164
  end
159
165
  end
data/config/routes.rb CHANGED
@@ -3,8 +3,6 @@ Rails.application.routes.draw do
3
3
  namespace :tt do
4
4
  namespace :api do
5
5
  namespace :v1 do
6
- resource :split_registry, only: :show
7
-
8
6
  resource :assignment, only: :create
9
7
 
10
8
  resource :identifier, only: :create
data/lib/test_track.rb CHANGED
@@ -21,16 +21,36 @@ module TestTrack
21
21
 
22
22
  class << self
23
23
  def analytics
24
- @analytics ||= wrapper(mixpanel)
24
+ @analytics ||= analytics_wrapper(mixpanel)
25
25
  end
26
26
 
27
27
  def analytics=(client)
28
- @analytics = client.is_a?(TestTrack::Analytics::SafeWrapper) ? client : wrapper(client)
28
+ @analytics = client.is_a?(TestTrack::Analytics::SafeWrapper) ? client : analytics_wrapper(client)
29
+ end
30
+
31
+ def misconfiguration_notifier
32
+ @misconfiguration_notifier ||= TestTrack::MisconfigurationNotifier::Wrapper.new(default_notifier)
33
+ end
34
+
35
+ def misconfiguration_notifier=(notifier)
36
+ @misconfiguration_notifier = if notifier.is_a?(TestTrack::MisconfigurationNotifier::Wrapper)
37
+ notifier
38
+ else
39
+ TestTrack::MisconfigurationNotifier::Wrapper.new(notifier)
40
+ end
29
41
  end
30
42
 
31
43
  private
32
44
 
33
- def wrapper(client)
45
+ def default_notifier
46
+ if defined?(::Airbrake)
47
+ TestTrack::MisconfigurationNotifier::Airbrake.new
48
+ else
49
+ TestTrack::MisconfigurationNotifier::Null.new
50
+ end
51
+ end
52
+
53
+ def analytics_wrapper(client)
34
54
  TestTrack::Analytics::SafeWrapper.new(client)
35
55
  end
36
56
 
@@ -2,16 +2,18 @@ module TestTrackRailsClient::AssignmentHelper
2
2
  def stub_test_track_assignments(assignment_registry) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
3
3
  raise "Cannot stub test track assignments when TestTrack is enabled" if TestTrack.enabled?
4
4
 
5
- split_registry = TestTrack::Fake::SplitRegistry.instance.to_h.dup
5
+ split_registry = TestTrack::Fake::SplitRegistry.instance.to_h.deep_dup
6
6
  assignments = []
7
7
  app_name = URI.parse(TestTrack.private_url).user
8
8
 
9
9
  assignment_registry.each do |split_name, variant|
10
10
  prefixed_split_name = "#{app_name}.#{split_name}"
11
- if split_registry.key?(prefixed_split_name)
11
+ if split_registry['splits'].key?(prefixed_split_name)
12
12
  assignments << { split_name: prefixed_split_name, variant: variant.to_s, unsynced: false }
13
13
  else
14
- split_registry[split_name] = { variant => 100 } unless split_registry[split_name]
14
+ unless split_registry['splits'][split_name]
15
+ split_registry['splits'][split_name.to_s] = { weights: { variant.to_s => 100 }, feature_gate: false }
16
+ end
15
17
  assignments << { split_name: split_name.to_s, variant: variant.to_s, unsynced: false }
16
18
  end
17
19
  end
@@ -1,8 +1,17 @@
1
1
  require 'delayed_job'
2
- require 'airbrake'
2
+
3
+ begin
4
+ require 'airbrake'
5
+ rescue LoadError # rubocop:disable Lint/HandleExceptions
6
+ end
7
+
3
8
  unless defined?(Delayed::Plugins::Airbrake) && Delayed::Worker.plugins.include?(Delayed::Plugins::Airbrake)
4
- require 'delayed-plugins-airbrake'
9
+ begin
10
+ require 'delayed-plugins-airbrake'
11
+ rescue LoadError # rubocop:disable Lint/HandleExceptions
12
+ end
5
13
  end
14
+
6
15
  require 'test_track'
7
16
 
8
17
  module TestTrackRailsClient
@@ -1,3 +1,3 @@
1
1
  module TestTrackRailsClient
2
- VERSION = "4.0.0.alpha26" # rubocop:disable Style/MutableConstant
2
+ VERSION = "4.0.0.alpha27" # rubocop:disable Style/MutableConstant
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_track_rails_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.alpha26
4
+ version: 4.0.0.alpha27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan O'Neill
@@ -13,36 +13,8 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2019-05-21 00:00:00.000000000 Z
16
+ date: 2019-06-21 00:00:00.000000000 Z
17
17
  dependencies:
18
- - !ruby/object:Gem::Dependency
19
- name: airbrake
20
- requirement: !ruby/object:Gem::Requirement
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: '4.1'
25
- type: :runtime
26
- prerelease: false
27
- version_requirements: !ruby/object:Gem::Requirement
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- version: '4.1'
32
- - !ruby/object:Gem::Dependency
33
- name: delayed-plugins-airbrake
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - ">="
37
- - !ruby/object:Gem::Version
38
- version: '0'
39
- type: :runtime
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
18
  - !ruby/object:Gem::Dependency
47
19
  name: delayed_job
48
20
  requirement: !ruby/object:Gem::Requirement
@@ -255,7 +227,7 @@ files:
255
227
  - Rakefile
256
228
  - app/assets/javascripts/testTrack.bundle.min.js
257
229
  - app/controllers/concerns/test_track/controller.rb
258
- - app/controllers/tt/api/v1/application_controller.rb
230
+ - app/controllers/tt/api/application_controller.rb
259
231
  - app/controllers/tt/api/v1/assignments_controller.rb
260
232
  - app/controllers/tt/api/v1/identifier_types_controller.rb
261
233
  - app/controllers/tt/api/v1/identifier_visitors_controller.rb
@@ -263,7 +235,6 @@ files:
263
235
  - app/controllers/tt/api/v1/resets_controller.rb
264
236
  - app/controllers/tt/api/v1/split_configs_controller.rb
265
237
  - app/controllers/tt/api/v1/split_details_controller.rb
266
- - app/controllers/tt/api/v1/split_registries_controller.rb
267
238
  - app/controllers/tt/api/v1/visitor_details_controller.rb
268
239
  - app/controllers/tt/api/v1/visitors_controller.rb
269
240
  - app/helpers/test_track/application_helper.rb
@@ -310,7 +281,6 @@ files:
310
281
  - app/views/tt/api/v1/identifier_visitors/show.json.jbuilder
311
282
  - app/views/tt/api/v1/identifiers/create.json.jbuilder
312
283
  - app/views/tt/api/v1/split_details/show.json.jbuilder
313
- - app/views/tt/api/v1/split_registries/show.json.jbuilder
314
284
  - app/views/tt/api/v1/visitors/_show.json.jbuilder
315
285
  - app/views/tt/api/v1/visitors/show.json.jbuilder
316
286
  - config/initializers/test_track_api.rb
@@ -1,5 +0,0 @@
1
- class Tt::Api::V1::SplitRegistriesController < Tt::Api::V1::ApplicationController
2
- def show
3
- @active_splits = TestTrack::FakeServer.split_registry
4
- end
5
- end
@@ -1,3 +0,0 @@
1
- @active_splits.each do |split|
2
- json.set! split.name, split.registry
3
- end