test_track_rails_client 4.0.0.alpha26 → 4.0.0.alpha27

Sign up to get free protection for your applications and to get access to all the features.
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