chillout 0.8.5.1 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 987de6b530580a990c6976659f84f144583c1b75
4
- data.tar.gz: 6165cdbdc4f0da56d467f30bb41d4840402322e8
3
+ metadata.gz: 658b6a7781d10cb43a0d4b337823465ed2be5b0f
4
+ data.tar.gz: 71bf4f623d9ed3f1db59443a84b5b2737c5ad190
5
5
  SHA512:
6
- metadata.gz: b0ad33c2f10ef2654eb16338b89d6deea4b52026fd514e1cb73d2f262c97a76f36f852b0dbb88b5b132fbe8e49492a0b82e2af22788a2f3a5a7201e08985f4bf
7
- data.tar.gz: 6928608274f23e0fe511b3f463755e59044589aa95d77a66866417c8fbe90b1264faece1a5f1942115118434443701bf3e279a383a5af7f52d6dfb4bc5784110
6
+ metadata.gz: 03b4744020e8157adb20fbd5a418d9679c1be269dcc597d5e67d2b198ac03102aa534ad94962c7aa46c5154fc292c3fe38b6d7a44380138626bb8fa255bbab89
7
+ data.tar.gz: 57a7ab5198b538415f0d1e2eea38f8b1542b5aa9a05cc380181a38b2dfd7fda26fdb390e958dbb9049e21c535d3fcf126812e678d59970ab150778598f536045
@@ -1,5 +1,10 @@
1
1
  # chillout gem changes
2
2
 
3
+ 0.8.6
4
+ -----
5
+
6
+ - Introduced custom advanced metrics.
7
+
3
8
  0.8.5
4
9
  -----
5
10
 
data/README.md CHANGED
@@ -28,9 +28,9 @@ chillout gem is automatically tracking your model creations. Remember you have t
28
28
 
29
29
  ### Custom metrics
30
30
 
31
- You can use `Chillout::Metric.track('custom_name')` to track a custom, phony metric. It's quite useful when you want to track a certain business process, like:
31
+ You can use `Chillout::Metric.track('custom_name')` to track a custom metric. It's quite useful when you want to track a certain business process, like:
32
32
 
33
- ```
33
+ ```ruby
34
34
  # in 'new':
35
35
  Chillout::Metric.track('RegistrationStarted')
36
36
 
@@ -40,6 +40,30 @@ Chillout::Metric.track('RegistrationCompleted')
40
40
 
41
41
  We encourage you to ship your own class (Adapter) which encapsulates this global constant and it's closer to your application's domain.
42
42
 
43
+ ### Advanced custom metrics
44
+
45
+ For more advanced tracking which supports multiple values, multiple tags and custom timestamps use `Chillout::Metric.push`:
46
+
47
+ ```ruby
48
+ Chillout::Metric.push(
49
+ series: "purchases",
50
+ tags: {
51
+ country: "USA",
52
+ terminal: "KATE-123",
53
+ },
54
+ timestamp: Time.now.utc,
55
+ values: {
56
+ number_of_products: 4,
57
+ total_amount: 55.70,
58
+ tax: 5.70,
59
+ },
60
+ )
61
+ ```
62
+
63
+ * `tags`, `timestamp` and `values` are optional.
64
+ * Tag keys and values should be strings (or symbols).
65
+ * Make sure that given values types are consistent. Avoid sending `total_amount: 55.70` in one metric and `total_amount: 60` in another. Always convert to same class such as Float, Integer or String.
66
+
43
67
  ## Different strategy
44
68
 
45
69
  By default chillout uses a background thread to send metrics in a non-blocking way. However, if you prefer it can use `active_job` and the adapter you configured for it ie. sidekiq, resque, delayed_job, etc.
@@ -1,6 +1,7 @@
1
1
  require "chillout/version"
2
2
  require "chillout/config"
3
3
  require "chillout/creations_container"
4
+ require "chillout/custom_advanced_metric"
4
5
  require "chillout/middleware/creations_monitor"
5
6
  require "chillout/integrations/sidekiq"
6
7
  require "chillout/subscribers/action_controller_notifications"
@@ -15,6 +16,15 @@ module Chillout
15
16
  Chillout.creations ||= CreationsContainer.new
16
17
  Chillout.creations.increment!(name)
17
18
  end
19
+
20
+ def self.push(series:, tags:{}, timestamp: Time.now.utc, values: {value: 1.0})
21
+ Chillout.client.enqueue(CustomAdvancedMetric.new(
22
+ series: series,
23
+ tags: tags,
24
+ timestamp: timestamp,
25
+ values: values
26
+ ))
27
+ end
18
28
  end
19
29
 
20
30
  def self.creations
@@ -24,6 +34,14 @@ module Chillout
24
34
  def self.creations=(val)
25
35
  Thread.current[:creations] = val
26
36
  end
37
+
38
+ def self.client=(client)
39
+ @client = client
40
+ end
41
+
42
+ def self.client
43
+ @client
44
+ end
27
45
  end
28
46
 
29
47
  require 'chillout/railtie' if defined?(Rails)
@@ -10,7 +10,6 @@ module Chillout
10
10
  private
11
11
  def listen(monitored_class)
12
12
  class_name = monitored_class.name
13
- return unless class_name
14
13
  monitored_class.after_commit :on => :create do
15
14
  Rails.logger.debug "[Chillout] Model created: #{class_name}"
16
15
  Chillout.creations ||= CreationsContainer.new
@@ -0,0 +1,21 @@
1
+ module Chillout
2
+ class CustomAdvancedMetric
3
+
4
+ def initialize(series:, tags:, timestamp:, values:)
5
+ @series = series.to_str
6
+ @tags = tags.to_h
7
+ @timestamp = timestamp.utc
8
+ @values = values.to_h
9
+ end
10
+
11
+ def as_measurements()
12
+ [{
13
+ series: @series,
14
+ tags: @tags,
15
+ timestamp: @timestamp,
16
+ values: @values,
17
+ }]
18
+ end
19
+
20
+ end
21
+ end
@@ -50,6 +50,7 @@ module Chillout
50
50
  Subscribers::ActionControllerNotifications.new.enable(client)
51
51
  end
52
52
  client.start
53
+ Chillout.client = client
53
54
  end
54
55
 
55
56
  private
@@ -1,3 +1,3 @@
1
1
  module Chillout
2
- VERSION = "0.8.5.1"
2
+ VERSION = "0.8.6"
3
3
  end
@@ -0,0 +1,29 @@
1
+ require 'test_helper'
2
+
3
+ class ClientSendsAdvancedMetricsTest < AcceptanceTestCase
4
+
5
+ def test_client_sends_advanced_metrics
6
+ test_app = TestApp.new
7
+ test_endpoint = TestEndpoint.new(port: 8084)
8
+ test_user = TestUser.new
9
+
10
+ test_endpoint.listen
11
+ test_app.boot(chillout_port: 8084)
12
+ if ENV['STRATEGY'] != 'active_job'
13
+ assert test_endpoint.has_received_information_about_startup
14
+ end
15
+ test_user.purchase
16
+ assert measurement = test_endpoint.has_one_purchase
17
+ assert_equal "purchases", measurement["series"]
18
+
19
+ assert_equal "USA", measurement["tags"]["country"]
20
+ assert_equal "KATE-123", measurement["tags"]["terminal"]
21
+
22
+ assert_equal 4, measurement["values"]["number_of_products"]
23
+ assert_equal 55.70, measurement["values"]["total_amount"]
24
+ assert_equal 5.70, measurement["values"]["tax"]
25
+ ensure
26
+ test_app.shutdown if test_app
27
+ end
28
+
29
+ end
@@ -0,0 +1,91 @@
1
+ require 'test_helper'
2
+ require 'chillout/custom_advanced_metric'
3
+
4
+ module Chillout
5
+ class CustomAdvancedMetricTest < ChilloutTestCase
6
+ def setup
7
+ @time = Time.now.utc
8
+ end
9
+
10
+ def test_basic_scenario
11
+ m = CustomAdvancedMetric.new(
12
+ series: "who",
13
+ tags: {
14
+ let: "the_dog",
15
+ },
16
+ values: {
17
+ out: 1,
18
+ we: "did",
19
+ },
20
+ timestamp: @time
21
+ ).as_measurements
22
+
23
+ assert_equal m, [{
24
+ series: "who",
25
+ tags: {
26
+ let: "the_dog",
27
+ },
28
+ values: {
29
+ out: 1,
30
+ we: "did",
31
+ },
32
+ timestamp: @time,
33
+ }]
34
+ end
35
+
36
+ def test_tags
37
+ m = CustomAdvancedMetric.new(
38
+ series: "who",
39
+ tags: [["1", "two"]],
40
+ values: {},
41
+ timestamp: @time
42
+ ).as_measurements
43
+
44
+ assert_equal m.first.fetch(:tags), {"1" => "two"}
45
+ end
46
+
47
+ def test_values
48
+ m = CustomAdvancedMetric.new(
49
+ series: "who",
50
+ tags: [],
51
+ values: [[:dog, 3]],
52
+ timestamp: @time
53
+ ).as_measurements
54
+
55
+ assert_equal m.first.fetch(:values), {dog: 3}
56
+ end
57
+
58
+ def test_invalid_series
59
+ assert_raises ArgumentError do
60
+ CustomAdvancedMetric.new(
61
+ series: Object.new,
62
+ tags: {
63
+ let: "the_dog",
64
+ },
65
+ values: {
66
+ out: 1,
67
+ we: "did",
68
+ },
69
+ timestamp: @time
70
+ )
71
+ end
72
+ end
73
+
74
+ def test_invalid_series
75
+ assert_raises NoMethodError do
76
+ CustomAdvancedMetric.new(
77
+ series: Object.new,
78
+ tags: {
79
+ let: "the_dog",
80
+ },
81
+ values: {
82
+ out: 1,
83
+ we: "did",
84
+ },
85
+ timestamp: @time
86
+ )
87
+ end
88
+ end
89
+
90
+ end
91
+ end
@@ -0,0 +1,18 @@
1
+ class PurchasesController < ApplicationController
2
+ def create
3
+ Chillout::Metric.push(
4
+ series: "purchases",
5
+ tags: {
6
+ country: "USA",
7
+ terminal: "KATE-123",
8
+ },
9
+ timestamp: Time.now.utc,
10
+ values: {
11
+ number_of_products: 4,
12
+ total_amount: 55.70,
13
+ tax: 5.70,
14
+ },
15
+ )
16
+ head :ok
17
+ end
18
+ end
@@ -1,3 +1,4 @@
1
1
  Rails400::Application.routes.draw do
2
2
  resources :entities
3
- end
3
+ resources :purchases, only: %i(create)
4
+ end
@@ -0,0 +1,18 @@
1
+ class PurchasesController < ApplicationController
2
+ def create
3
+ Chillout::Metric.push(
4
+ series: "purchases",
5
+ tags: {
6
+ country: "USA",
7
+ terminal: "KATE-123",
8
+ },
9
+ timestamp: Time.now.utc,
10
+ values: {
11
+ number_of_products: 4,
12
+ total_amount: 55.70,
13
+ tax: 5.70,
14
+ },
15
+ )
16
+ head :ok
17
+ end
18
+ end
@@ -1,3 +1,4 @@
1
1
  Rails400::Application.routes.draw do
2
2
  resources :entities
3
+ resources :purchases, only: %i(create)
3
4
  end
@@ -0,0 +1,18 @@
1
+ class PurchasesController < ApplicationController
2
+ def create
3
+ Chillout::Metric.push(
4
+ series: "purchases",
5
+ tags: {
6
+ country: "USA",
7
+ terminal: "KATE-123",
8
+ },
9
+ timestamp: Time.now.utc,
10
+ values: {
11
+ number_of_products: 4,
12
+ total_amount: 55.70,
13
+ tax: 5.70,
14
+ },
15
+ )
16
+ head :ok
17
+ end
18
+ end
@@ -1,3 +1,4 @@
1
1
  Rails400::Application.routes.draw do
2
2
  resources :entities
3
+ resources :purchases, only: %i(create)
3
4
  end
@@ -0,0 +1,18 @@
1
+ class PurchasesController < ApplicationController
2
+ def create
3
+ Chillout::Metric.push(
4
+ series: "purchases",
5
+ tags: {
6
+ country: "USA",
7
+ terminal: "KATE-123",
8
+ },
9
+ timestamp: Time.now.utc,
10
+ values: {
11
+ number_of_products: 4,
12
+ total_amount: 55.70,
13
+ tax: 5.70,
14
+ },
15
+ )
16
+ head :ok
17
+ end
18
+ end
@@ -1,3 +1,4 @@
1
1
  Rails400::Application.routes.draw do
2
2
  resources :entities
3
+ resources :purchases, only: %i(create)
3
4
  end
@@ -0,0 +1,18 @@
1
+ class PurchasesController < ApplicationController
2
+ def create
3
+ Chillout::Metric.push(
4
+ series: "purchases",
5
+ tags: {
6
+ country: "USA",
7
+ terminal: "KATE-123",
8
+ },
9
+ timestamp: Time.now.utc,
10
+ values: {
11
+ number_of_products: 4,
12
+ total_amount: 55.70,
13
+ tax: 5.70,
14
+ },
15
+ )
16
+ head :ok
17
+ end
18
+ end
@@ -1,3 +1,4 @@
1
1
  Rails400::Application.routes.draw do
2
2
  resources :entities
3
+ resources :purchases, only: %i(create)
3
4
  end
@@ -0,0 +1,18 @@
1
+ class PurchasesController < ApplicationController
2
+ def create
3
+ Chillout::Metric.push(
4
+ series: "purchases",
5
+ tags: {
6
+ country: "USA",
7
+ terminal: "KATE-123",
8
+ },
9
+ timestamp: Time.now.utc,
10
+ values: {
11
+ number_of_products: 4,
12
+ total_amount: 55.70,
13
+ tax: 5.70,
14
+ },
15
+ )
16
+ head :ok
17
+ end
18
+ end
@@ -1,3 +1,4 @@
1
1
  Rails400::Application.routes.draw do
2
2
  resources :entities
3
+ resources :purchases, only: %i(create)
3
4
  end
@@ -0,0 +1,18 @@
1
+ class PurchasesController < ApplicationController
2
+ def create
3
+ Chillout::Metric.push(
4
+ series: "purchases",
5
+ tags: {
6
+ country: "USA",
7
+ terminal: "KATE-123",
8
+ },
9
+ timestamp: Time.now.utc,
10
+ values: {
11
+ number_of_products: 4,
12
+ total_amount: 55.70,
13
+ tax: 5.70,
14
+ },
15
+ )
16
+ head :ok
17
+ end
18
+ end
@@ -1,3 +1,4 @@
1
1
  Rails400::Application.routes.draw do
2
2
  resources :entities
3
+ resources :purchases, only: %i(create)
3
4
  end
@@ -0,0 +1,18 @@
1
+ class PurchasesController < ApplicationController
2
+ def create
3
+ Chillout::Metric.push(
4
+ series: "purchases",
5
+ tags: {
6
+ country: "USA",
7
+ terminal: "KATE-123",
8
+ },
9
+ timestamp: Time.now.utc,
10
+ values: {
11
+ number_of_products: 4,
12
+ total_amount: 55.70,
13
+ tax: 5.70,
14
+ },
15
+ )
16
+ head :ok
17
+ end
18
+ end
@@ -1,3 +1,4 @@
1
1
  Rails400::Application.routes.draw do
2
2
  resources :entities
3
+ resources :purchases, only: %i(create)
3
4
  end
@@ -67,6 +67,12 @@ class TestUser
67
67
  end
68
68
  end
69
69
 
70
+ def purchase
71
+ Net::HTTP.start('127.0.0.1', 3000) do |http|
72
+ http.post('/purchases', "")
73
+ end
74
+ end
75
+
70
76
  end
71
77
 
72
78
  class TestApp
@@ -188,6 +194,19 @@ class TestEndpoint
188
194
  false
189
195
  end
190
196
 
197
+ def has_one_purchase
198
+ 10.times do
199
+ begin
200
+ many = metrics.pop(true)
201
+ metric = many["measurements"].find{|m| m["series"] == "purchases" }
202
+ return metric if metric
203
+ rescue ThreadError
204
+ sleep(1)
205
+ end
206
+ end
207
+ false
208
+ end
209
+
191
210
  def has_one_controller_metric
192
211
  10.times do
193
212
  begin
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chillout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.5.1
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Lomnicki
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-07-12 00:00:00.000000000 Z
14
+ date: 2017-07-03 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: multi_json
@@ -206,6 +206,7 @@ files:
206
206
  - lib/chillout/config.rb
207
207
  - lib/chillout/creation_listener.rb
208
208
  - lib/chillout/creations_container.rb
209
+ - lib/chillout/custom_advanced_metric.rb
209
210
  - lib/chillout/generators/install.rb
210
211
  - lib/chillout/integrations/sidekiq.rb
211
212
  - lib/chillout/job.rb
@@ -223,6 +224,7 @@ files:
223
224
  - lib/chillout/tasks.rb
224
225
  - lib/chillout/version.rb
225
226
  - lib/chillout/worker.rb
227
+ - test/acceptance/client_sends_advanced_metrics_test.rb
226
228
  - test/acceptance/client_sends_controller_performance_test.rb
227
229
  - test/acceptance/client_sends_metrics_test.rb
228
230
  - test/acceptance/sidekiq_workers_send_metrics_test.rb
@@ -231,6 +233,7 @@ files:
231
233
  - test/client_test.rb
232
234
  - test/config_test.rb
233
235
  - test/creations_container_test.rb
236
+ - test/custom_advanced_metric_test.rb
234
237
  - test/dispatcher_test.rb
235
238
  - test/http_client_test.rb
236
239
  - test/integration/client_test.rb
@@ -248,6 +251,7 @@ files:
248
251
  - test/support/rails_4_0_0/app/controllers/application_controller.rb
249
252
  - test/support/rails_4_0_0/app/controllers/concerns/.keep
250
253
  - test/support/rails_4_0_0/app/controllers/entities_controller.rb
254
+ - test/support/rails_4_0_0/app/controllers/purchases_controller.rb
251
255
  - test/support/rails_4_0_0/app/helpers/application_helper.rb
252
256
  - test/support/rails_4_0_0/app/models/.keep
253
257
  - test/support/rails_4_0_0/app/models/concerns/.keep
@@ -292,6 +296,7 @@ files:
292
296
  - test/support/rails_4_0_13/app/controllers/application_controller.rb
293
297
  - test/support/rails_4_0_13/app/controllers/concerns/.keep
294
298
  - test/support/rails_4_0_13/app/controllers/entities_controller.rb
299
+ - test/support/rails_4_0_13/app/controllers/purchases_controller.rb
295
300
  - test/support/rails_4_0_13/app/helpers/application_helper.rb
296
301
  - test/support/rails_4_0_13/app/models/.keep
297
302
  - test/support/rails_4_0_13/app/models/concerns/.keep
@@ -336,6 +341,7 @@ files:
336
341
  - test/support/rails_4_1_0/app/controllers/application_controller.rb
337
342
  - test/support/rails_4_1_0/app/controllers/concerns/.keep
338
343
  - test/support/rails_4_1_0/app/controllers/entities_controller.rb
344
+ - test/support/rails_4_1_0/app/controllers/purchases_controller.rb
339
345
  - test/support/rails_4_1_0/app/helpers/application_helper.rb
340
346
  - test/support/rails_4_1_0/app/models/.keep
341
347
  - test/support/rails_4_1_0/app/models/concerns/.keep
@@ -380,6 +386,7 @@ files:
380
386
  - test/support/rails_4_1_16/app/controllers/application_controller.rb
381
387
  - test/support/rails_4_1_16/app/controllers/concerns/.keep
382
388
  - test/support/rails_4_1_16/app/controllers/entities_controller.rb
389
+ - test/support/rails_4_1_16/app/controllers/purchases_controller.rb
383
390
  - test/support/rails_4_1_16/app/helpers/application_helper.rb
384
391
  - test/support/rails_4_1_16/app/models/.keep
385
392
  - test/support/rails_4_1_16/app/models/concerns/.keep
@@ -424,6 +431,7 @@ files:
424
431
  - test/support/rails_4_2_0/app/controllers/application_controller.rb
425
432
  - test/support/rails_4_2_0/app/controllers/concerns/.keep
426
433
  - test/support/rails_4_2_0/app/controllers/entities_controller.rb
434
+ - test/support/rails_4_2_0/app/controllers/purchases_controller.rb
427
435
  - test/support/rails_4_2_0/app/helpers/application_helper.rb
428
436
  - test/support/rails_4_2_0/app/jobs/create_entity_job.rb
429
437
  - test/support/rails_4_2_0/app/models/.keep
@@ -469,6 +477,7 @@ files:
469
477
  - test/support/rails_4_2_8/app/controllers/application_controller.rb
470
478
  - test/support/rails_4_2_8/app/controllers/concerns/.keep
471
479
  - test/support/rails_4_2_8/app/controllers/entities_controller.rb
480
+ - test/support/rails_4_2_8/app/controllers/purchases_controller.rb
472
481
  - test/support/rails_4_2_8/app/helpers/application_helper.rb
473
482
  - test/support/rails_4_2_8/app/jobs/create_entity_job.rb
474
483
  - test/support/rails_4_2_8/app/models/.keep
@@ -514,6 +523,7 @@ files:
514
523
  - test/support/rails_5_0_3/app/controllers/application_controller.rb
515
524
  - test/support/rails_5_0_3/app/controllers/concerns/.keep
516
525
  - test/support/rails_5_0_3/app/controllers/entities_controller.rb
526
+ - test/support/rails_5_0_3/app/controllers/purchases_controller.rb
517
527
  - test/support/rails_5_0_3/app/helpers/application_helper.rb
518
528
  - test/support/rails_5_0_3/app/jobs/create_entity_job.rb
519
529
  - test/support/rails_5_0_3/app/models/.keep
@@ -559,6 +569,7 @@ files:
559
569
  - test/support/rails_5_1_1/app/controllers/application_controller.rb
560
570
  - test/support/rails_5_1_1/app/controllers/concerns/.keep
561
571
  - test/support/rails_5_1_1/app/controllers/entities_controller.rb
572
+ - test/support/rails_5_1_1/app/controllers/purchases_controller.rb
562
573
  - test/support/rails_5_1_1/app/helpers/application_helper.rb
563
574
  - test/support/rails_5_1_1/app/jobs/create_entity_job.rb
564
575
  - test/support/rails_5_1_1/app/models/.keep
@@ -620,11 +631,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
620
631
  version: '0'
621
632
  requirements: []
622
633
  rubyforge_project:
623
- rubygems_version: 2.5.2
634
+ rubygems_version: 2.6.12
624
635
  signing_key:
625
636
  specification_version: 4
626
637
  summary: Chillout.io Ruby client
627
638
  test_files:
639
+ - test/acceptance/client_sends_advanced_metrics_test.rb
628
640
  - test/acceptance/client_sends_controller_performance_test.rb
629
641
  - test/acceptance/client_sends_metrics_test.rb
630
642
  - test/acceptance/sidekiq_workers_send_metrics_test.rb
@@ -633,6 +645,7 @@ test_files:
633
645
  - test/client_test.rb
634
646
  - test/config_test.rb
635
647
  - test/creations_container_test.rb
648
+ - test/custom_advanced_metric_test.rb
636
649
  - test/dispatcher_test.rb
637
650
  - test/http_client_test.rb
638
651
  - test/integration/client_test.rb
@@ -650,6 +663,7 @@ test_files:
650
663
  - test/support/rails_4_0_0/app/controllers/application_controller.rb
651
664
  - test/support/rails_4_0_0/app/controllers/concerns/.keep
652
665
  - test/support/rails_4_0_0/app/controllers/entities_controller.rb
666
+ - test/support/rails_4_0_0/app/controllers/purchases_controller.rb
653
667
  - test/support/rails_4_0_0/app/helpers/application_helper.rb
654
668
  - test/support/rails_4_0_0/app/models/.keep
655
669
  - test/support/rails_4_0_0/app/models/concerns/.keep
@@ -694,6 +708,7 @@ test_files:
694
708
  - test/support/rails_4_0_13/app/controllers/application_controller.rb
695
709
  - test/support/rails_4_0_13/app/controllers/concerns/.keep
696
710
  - test/support/rails_4_0_13/app/controllers/entities_controller.rb
711
+ - test/support/rails_4_0_13/app/controllers/purchases_controller.rb
697
712
  - test/support/rails_4_0_13/app/helpers/application_helper.rb
698
713
  - test/support/rails_4_0_13/app/models/.keep
699
714
  - test/support/rails_4_0_13/app/models/concerns/.keep
@@ -738,6 +753,7 @@ test_files:
738
753
  - test/support/rails_4_1_0/app/controllers/application_controller.rb
739
754
  - test/support/rails_4_1_0/app/controllers/concerns/.keep
740
755
  - test/support/rails_4_1_0/app/controllers/entities_controller.rb
756
+ - test/support/rails_4_1_0/app/controllers/purchases_controller.rb
741
757
  - test/support/rails_4_1_0/app/helpers/application_helper.rb
742
758
  - test/support/rails_4_1_0/app/models/.keep
743
759
  - test/support/rails_4_1_0/app/models/concerns/.keep
@@ -782,6 +798,7 @@ test_files:
782
798
  - test/support/rails_4_1_16/app/controllers/application_controller.rb
783
799
  - test/support/rails_4_1_16/app/controllers/concerns/.keep
784
800
  - test/support/rails_4_1_16/app/controllers/entities_controller.rb
801
+ - test/support/rails_4_1_16/app/controllers/purchases_controller.rb
785
802
  - test/support/rails_4_1_16/app/helpers/application_helper.rb
786
803
  - test/support/rails_4_1_16/app/models/.keep
787
804
  - test/support/rails_4_1_16/app/models/concerns/.keep
@@ -826,6 +843,7 @@ test_files:
826
843
  - test/support/rails_4_2_0/app/controllers/application_controller.rb
827
844
  - test/support/rails_4_2_0/app/controllers/concerns/.keep
828
845
  - test/support/rails_4_2_0/app/controllers/entities_controller.rb
846
+ - test/support/rails_4_2_0/app/controllers/purchases_controller.rb
829
847
  - test/support/rails_4_2_0/app/helpers/application_helper.rb
830
848
  - test/support/rails_4_2_0/app/jobs/create_entity_job.rb
831
849
  - test/support/rails_4_2_0/app/models/.keep
@@ -871,6 +889,7 @@ test_files:
871
889
  - test/support/rails_4_2_8/app/controllers/application_controller.rb
872
890
  - test/support/rails_4_2_8/app/controllers/concerns/.keep
873
891
  - test/support/rails_4_2_8/app/controllers/entities_controller.rb
892
+ - test/support/rails_4_2_8/app/controllers/purchases_controller.rb
874
893
  - test/support/rails_4_2_8/app/helpers/application_helper.rb
875
894
  - test/support/rails_4_2_8/app/jobs/create_entity_job.rb
876
895
  - test/support/rails_4_2_8/app/models/.keep
@@ -916,6 +935,7 @@ test_files:
916
935
  - test/support/rails_5_0_3/app/controllers/application_controller.rb
917
936
  - test/support/rails_5_0_3/app/controllers/concerns/.keep
918
937
  - test/support/rails_5_0_3/app/controllers/entities_controller.rb
938
+ - test/support/rails_5_0_3/app/controllers/purchases_controller.rb
919
939
  - test/support/rails_5_0_3/app/helpers/application_helper.rb
920
940
  - test/support/rails_5_0_3/app/jobs/create_entity_job.rb
921
941
  - test/support/rails_5_0_3/app/models/.keep
@@ -961,6 +981,7 @@ test_files:
961
981
  - test/support/rails_5_1_1/app/controllers/application_controller.rb
962
982
  - test/support/rails_5_1_1/app/controllers/concerns/.keep
963
983
  - test/support/rails_5_1_1/app/controllers/entities_controller.rb
984
+ - test/support/rails_5_1_1/app/controllers/purchases_controller.rb
964
985
  - test/support/rails_5_1_1/app/helpers/application_helper.rb
965
986
  - test/support/rails_5_1_1/app/jobs/create_entity_job.rb
966
987
  - test/support/rails_5_1_1/app/models/.keep