influxdb-rails 1.0.1.beta2 → 1.0.3

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rubocop.yml +18 -0
  3. data/.github/workflows/spec.yml +32 -0
  4. data/.rubocop.yml +36 -7
  5. data/CHANGELOG.md +22 -1
  6. data/README.md +43 -34
  7. data/gemfiles/Gemfile.rails-6.0.x +1 -2
  8. data/gemfiles/Gemfile.rails-6.1.x +9 -0
  9. data/influxdb-rails.gemspec +2 -2
  10. data/lib/influxdb/rails/middleware/active_job_subscriber.rb +11 -11
  11. data/lib/influxdb/rails/middleware/request_subscriber.rb +9 -1
  12. data/lib/influxdb/rails/railtie.rb +0 -1
  13. data/lib/influxdb/rails/sql/normalizer.rb +3 -3
  14. data/lib/influxdb/rails/tags.rb +2 -2
  15. data/lib/influxdb/rails/values.rb +1 -1
  16. data/lib/influxdb/rails/version.rb +1 -1
  17. data/lib/influxdb-rails.rb +1 -2
  18. data/lib/rails/generators/influxdb/templates/initializer.rb +4 -0
  19. data/sample-dashboard/Dockerfile +2 -2
  20. data/sample-dashboard/README.md +21 -28
  21. data/sample-dashboard/Rakefile +10 -5
  22. data/sample-dashboard/Ruby On Rails ActiveJob.json +600 -0
  23. data/sample-dashboard/{Ruby On Rails Performance (per Action).json → Ruby On Rails Performance per Action.json } +343 -589
  24. data/sample-dashboard/{Ruby On Rails Performance (per Request).json → Ruby On Rails Performance per Request.json } +361 -211
  25. data/sample-dashboard/Ruby On Rails Performance.json +1347 -1139
  26. data/sample-dashboard/Ruby On Rails Requests.json +834 -0
  27. data/sample-dashboard/Ruby On Rails Slowlog by Action.json +278 -0
  28. data/sample-dashboard/Ruby On Rails Slowlog by Request.json +277 -0
  29. data/sample-dashboard/Ruby On Rails Slowlog by SQL.json +328 -0
  30. data/sample-dashboard/docker-compose.yml +6 -1
  31. data/sample-dashboard/provisioning/activejob.json +600 -0
  32. data/sample-dashboard/provisioning/performance-action.json +334 -580
  33. data/sample-dashboard/provisioning/performance-request.json +355 -205
  34. data/sample-dashboard/provisioning/performance.json +1336 -1128
  35. data/sample-dashboard/provisioning/requests.json +834 -0
  36. data/sample-dashboard/provisioning/slowlog-action.json +278 -0
  37. data/sample-dashboard/provisioning/slowlog-requests.json +277 -0
  38. data/sample-dashboard/provisioning/slowlog-sql.json +328 -0
  39. data/spec/requests/action_controller_metrics_spec.rb +24 -10
  40. data/spec/requests/action_mailer_deliver_metrics_spec.rb +4 -11
  41. data/spec/requests/action_view_collection_metrics_spec.rb +7 -16
  42. data/spec/requests/action_view_partial_metrics_spec.rb +6 -15
  43. data/spec/requests/action_view_template_metrics_spec.rb +6 -15
  44. data/spec/requests/active_job_enqueue_metrics_spec.rb +6 -15
  45. data/spec/requests/active_job_perform_metrics_spec.rb +5 -11
  46. data/spec/requests/active_record_instantiation_metrics_spec.rb +7 -16
  47. data/spec/requests/active_record_sql_metrics_spec.rb +13 -29
  48. data/spec/requests/block_inistrumentation_spec.rb +8 -17
  49. data/spec/requests/context_spec.rb +1 -1
  50. data/spec/requests/logger_spec.rb +1 -1
  51. data/spec/spec_helper.rb +2 -1
  52. data/spec/support/rails5/app.rb +3 -4
  53. data/spec/support/rails6/app.rb +3 -4
  54. data/spec/unit/tags.rb +47 -0
  55. metadata +25 -14
  56. data/.travis.yml +0 -28
  57. data/spec/requests/active_job_perform_start_metrics_spec.rb +0 -68
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActionView partial metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -17,18 +17,11 @@ RSpec.describe "ActionView partial metrics", type: :request do
17
17
 
18
18
  expect_metric(
19
19
  tags: a_hash_including(
20
- location: "MetricsController#index",
21
- hook: "render_partial",
22
- additional_tag: :value,
23
- filename: include("spec/support/views/metrics/_item.html.erb"),
24
- server: Socket.gethostname,
25
- app_name: :app_name,
26
- tags_middleware: :tags_middleware
20
+ hook: "render_partial",
21
+ filename: include("spec/support/views/metrics/_item.html.erb")
27
22
  ),
28
23
  values: a_hash_including(
29
- additional_value: :value,
30
- request_id: :request_id,
31
- value: be_between(1, 30)
24
+ value: be_between(1, 500)
32
25
  )
33
26
  )
34
27
  end
@@ -40,8 +33,7 @@ RSpec.describe "ActionView partial metrics", type: :request do
40
33
 
41
34
  expect_metric(
42
35
  tags: a_hash_including(
43
- location: "MetricsController#index",
44
- hook: "render_partial"
36
+ hook: "render_partial"
45
37
  ),
46
38
  timestamp: 1_514_797_200
47
39
  )
@@ -54,8 +46,7 @@ RSpec.describe "ActionView partial metrics", type: :request do
54
46
 
55
47
  expect_no_metric(
56
48
  tags: a_hash_including(
57
- location: "MetricsController#index",
58
- hook: "render_partial"
49
+ hook: "render_partial"
59
50
  )
60
51
  )
61
52
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActionView template metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -17,18 +17,11 @@ RSpec.describe "ActionView template metrics", type: :request do
17
17
 
18
18
  expect_metric(
19
19
  tags: a_hash_including(
20
- location: "MetricsController#index",
21
- hook: "render_template",
22
- additional_tag: :value,
23
- filename: include("spec/support/views/metrics/index.html.erb"),
24
- server: Socket.gethostname,
25
- app_name: :app_name,
26
- tags_middleware: :tags_middleware
20
+ hook: "render_template",
21
+ filename: include("spec/support/views/metrics/index.html.erb")
27
22
  ),
28
23
  values: a_hash_including(
29
- additional_value: :value,
30
- request_id: :request_id,
31
- value: be_between(1, 30)
24
+ value: be_between(1, 500)
32
25
  )
33
26
  )
34
27
  end
@@ -40,8 +33,7 @@ RSpec.describe "ActionView template metrics", type: :request do
40
33
 
41
34
  expect_metric(
42
35
  tags: a_hash_including(
43
- location: "MetricsController#index",
44
- hook: "render_template"
36
+ hook: "render_template"
45
37
  ),
46
38
  timestamp: 1_514_797_200
47
39
  )
@@ -54,8 +46,7 @@ RSpec.describe "ActionView template metrics", type: :request do
54
46
 
55
47
  expect_no_metric(
56
48
  tags: a_hash_including(
57
- location: "MetricsController#index",
58
- hook: "render_template"
49
+ hook: "render_template"
59
50
  )
60
51
  )
61
52
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActiveJob enqueue metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -18,20 +18,13 @@ RSpec.describe "ActiveJob enqueue metrics", type: :request do
18
18
 
19
19
  expect_metric(
20
20
  tags: a_hash_including(
21
- location: "MetricsController#index",
22
- hook: "enqueue",
23
- job: "MetricJob",
24
- queue: "default",
25
- state: "queued",
26
- additional_tag: :value,
27
- server: Socket.gethostname,
28
- app_name: :app_name,
29
- tags_middleware: :tags_middleware
21
+ hook: "enqueue",
22
+ job: "MetricJob",
23
+ queue: "default",
24
+ state: "queued"
30
25
  ),
31
26
  values: a_hash_including(
32
- additional_value: :value,
33
- request_id: :request_id,
34
- value: 1
27
+ value: 1
35
28
  )
36
29
  )
37
30
  end
@@ -43,7 +36,6 @@ RSpec.describe "ActiveJob enqueue metrics", type: :request do
43
36
 
44
37
  expect_metric(
45
38
  tags: a_hash_including(
46
- location: "MetricsController#index",
47
39
  hook: "enqueue"
48
40
  ),
49
41
  timestamp: 1_514_797_200
@@ -57,7 +49,6 @@ RSpec.describe "ActiveJob enqueue metrics", type: :request do
57
49
 
58
50
  expect_no_metric(
59
51
  tags: a_hash_including(
60
- location: "MetricsController#index",
61
52
  hook: "enqueue"
62
53
  )
63
54
  )
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActiveJobs perform metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -20,14 +20,10 @@ RSpec.describe "ActiveJobs perform metrics", type: :request do
20
20
 
21
21
  expect_metric(
22
22
  tags: a_hash_including(
23
- location: "MetricsController#index",
24
- hook: "perform",
25
- state: "succeeded",
26
- job: "MetricJob",
27
- queue: "default",
28
- server: Socket.gethostname,
29
- app_name: :app_name,
30
- tags_middleware: :tags_middleware
23
+ hook: "perform",
24
+ state: "succeeded",
25
+ job: "MetricJob",
26
+ queue: "default"
31
27
  ),
32
28
  values: a_hash_including(
33
29
  value: be_between(0, 30)
@@ -44,7 +40,6 @@ RSpec.describe "ActiveJobs perform metrics", type: :request do
44
40
 
45
41
  expect_metric(
46
42
  tags: a_hash_including(
47
- location: "MetricsController#index",
48
43
  hook: "perform"
49
44
  ),
50
45
  timestamp: 1_514_797_200
@@ -60,7 +55,6 @@ RSpec.describe "ActiveJobs perform metrics", type: :request do
60
55
 
61
56
  expect_no_metric(
62
57
  tags: a_hash_including(
63
- location: "MetricsController#index",
64
58
  hook: "perform"
65
59
  )
66
60
  )
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActiveRecord instantiation metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -19,19 +19,12 @@ RSpec.describe "ActiveRecord instantiation metrics", type: :request do
19
19
 
20
20
  expect_metric(
21
21
  tags: a_hash_including(
22
- location: "MetricsController#show",
23
- hook: "instantiation",
24
- class_name: "Metric",
25
- additional_tag: :value,
26
- server: Socket.gethostname,
27
- app_name: :app_name,
28
- tags_middleware: :tags_middleware
22
+ hook: "instantiation",
23
+ class_name: "Metric"
29
24
  ),
30
25
  values: a_hash_including(
31
- additional_value: :value,
32
- request_id: :request_id,
33
- value: be_between(1, 30),
34
- record_count: 1
26
+ value: be_between(1, 500),
27
+ record_count: 1
35
28
  )
36
29
  )
37
30
  end
@@ -43,8 +36,7 @@ RSpec.describe "ActiveRecord instantiation metrics", type: :request do
43
36
 
44
37
  expect_metric(
45
38
  tags: a_hash_including(
46
- location: "MetricsController#show",
47
- hook: "instantiation"
39
+ hook: "instantiation"
48
40
  ),
49
41
  timestamp: 1_514_797_200
50
42
  )
@@ -57,8 +49,7 @@ RSpec.describe "ActiveRecord instantiation metrics", type: :request do
57
49
 
58
50
  expect_no_metric(
59
51
  tags: a_hash_including(
60
- location: "MetricsController#show",
61
- hook: "instantiation"
52
+ hook: "instantiation"
62
53
  )
63
54
  )
64
55
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActiveRecord SQL metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -19,21 +19,14 @@ RSpec.describe "ActiveRecord SQL metrics", type: :request do
19
19
 
20
20
  expect_metric(
21
21
  tags: a_hash_including(
22
- location: "MetricsController#index",
23
- hook: "sql",
24
- name: "Metric Create",
25
- class_name: "Metric",
26
- operation: "INSERT",
27
- additional_tag: :value,
28
- server: Socket.gethostname,
29
- app_name: :app_name,
30
- tags_middleware: :tags_middleware
22
+ hook: "sql",
23
+ name: "Metric Create",
24
+ class_name: "Metric",
25
+ operation: "INSERT"
31
26
  ),
32
27
  values: a_hash_including(
33
- additional_value: :value,
34
- request_id: :request_id,
35
- value: be_between(1, 30),
36
- sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)"
28
+ value: be_between(1, 500),
29
+ sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)"
37
30
  )
38
31
  )
39
32
  end
@@ -45,21 +38,14 @@ RSpec.describe "ActiveRecord SQL metrics", type: :request do
45
38
 
46
39
  expect_metric(
47
40
  tags: a_hash_including(
48
- location: "MetricsController#index",
49
- hook: "sql",
50
- name: "SQL",
51
- class_name: "SQL",
52
- operation: "INSERT",
53
- additional_tag: :value,
54
- server: Socket.gethostname,
55
- app_name: :app_name,
56
- tags_middleware: :tags_middleware
41
+ hook: "sql",
42
+ name: "SQL",
43
+ class_name: "SQL",
44
+ operation: "INSERT"
57
45
  ),
58
46
  values: a_hash_including(
59
- additional_value: :value,
60
- request_id: :request_id,
61
- value: be_between(1, 30),
62
- sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)"
47
+ value: be_between(1, 500),
48
+ sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)"
63
49
  )
64
50
  )
65
51
  end
@@ -71,7 +57,6 @@ RSpec.describe "ActiveRecord SQL metrics", type: :request do
71
57
 
72
58
  expect_metric(
73
59
  tags: a_hash_including(
74
- location: "MetricsController#index",
75
60
  hook: "sql"
76
61
  ),
77
62
  timestamp: 1_514_797_200
@@ -85,7 +70,6 @@ RSpec.describe "ActiveRecord SQL metrics", type: :request do
85
70
 
86
71
  expect_no_metric(
87
72
  tags: a_hash_including(
88
- location: "MetricsController#index",
89
73
  hook: "sql"
90
74
  )
91
75
  )
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "BlockInstrumentation metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -17,20 +17,13 @@ RSpec.describe "BlockInstrumentation metrics", type: :request do
17
17
 
18
18
  expect_metric(
19
19
  tags: a_hash_including(
20
- location: "MetricsController#index",
21
- hook: "block_instrumentation",
22
- additional_tag: :value,
23
- server: Socket.gethostname,
24
- app_name: :app_name,
25
- tags_middleware: :tags_middleware,
26
- block_tag: :block_tag,
27
- name: "name"
20
+ hook: "block_instrumentation",
21
+ block_tag: :block_tag,
22
+ name: "name"
28
23
  ),
29
24
  values: a_hash_including(
30
- additional_value: :value,
31
- request_id: :request_id,
32
- block_value: :block_value,
33
- value: be_between(1, 30)
25
+ block_value: :block_value,
26
+ value: be_between(1, 500)
34
27
  )
35
28
  )
36
29
  end
@@ -42,8 +35,7 @@ RSpec.describe "BlockInstrumentation metrics", type: :request do
42
35
 
43
36
  expect_metric(
44
37
  tags: a_hash_including(
45
- location: "MetricsController#index",
46
- hook: "block_instrumentation"
38
+ hook: "block_instrumentation"
47
39
  ),
48
40
  timestamp: 1_514_797_200
49
41
  )
@@ -56,8 +48,7 @@ RSpec.describe "BlockInstrumentation metrics", type: :request do
56
48
 
57
49
  expect_no_metric(
58
50
  tags: a_hash_including(
59
- location: "MetricsController#index",
60
- hook: "block_instrumentation"
51
+ hook: "block_instrumentation"
61
52
  )
62
53
  )
63
54
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "Context", type: :request do
4
4
  it "resets the context after a request" do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "Logger", type: :request do
4
4
  it "logs exception" do
data/spec/spec_helper.rb CHANGED
@@ -2,7 +2,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require "active_support"
4
4
  require_relative "../lib/influxdb/rails/helpers/rspec_matchers"
5
- require File.expand_path(File.dirname(__FILE__) + "/support/broken_client")
5
+ require File.expand_path("#{File.dirname(__FILE__)}/support/broken_client")
6
6
 
7
7
  ENV["RAILS_ENV"] ||= "test"
8
8
 
@@ -34,6 +34,7 @@ RSpec.configure do |config|
34
34
  end
35
35
 
36
36
  config.include ActiveSupport::Testing::TimeHelpers
37
+ config.include ActiveSupport::Testing::Assertions
37
38
  config.include ActiveJob::TestHelper
38
39
 
39
40
  config.include InfluxDB::Rails::BrokenClient
@@ -20,9 +20,6 @@ app.routes.draw do
20
20
  resources :exceptions, only: :index
21
21
  end
22
22
 
23
- InfluxDB::Rails.configure do |config|
24
- end
25
-
26
23
  ENV["DATABASE_URL"] = "sqlite3::memory:"
27
24
  ActiveRecord::Schema.define do
28
25
  create_table :metrics, force: true do |t|
@@ -52,7 +49,9 @@ class MetricMailer < ActionMailer::Base
52
49
  end
53
50
 
54
51
  class Metric < ActiveRecord::Base; end
52
+
55
53
  class ApplicationController < ActionController::Base; end
54
+
56
55
  class MetricsController < ApplicationController
57
56
  prepend_view_path File.join(__dir__, "..", "views")
58
57
 
@@ -77,7 +76,7 @@ end
77
76
 
78
77
  class ExceptionsController < ApplicationController
79
78
  def index
80
- 1 / 0
79
+ raise ActiveRecord::RecordNotFound
81
80
  end
82
81
  end
83
82
 
@@ -20,9 +20,6 @@ app.routes.draw do
20
20
  resources :exceptions, only: :index
21
21
  end
22
22
 
23
- InfluxDB::Rails.configure do |config|
24
- end
25
-
26
23
  ENV["DATABASE_URL"] = "sqlite3::memory:"
27
24
  ActiveRecord::Schema.define do
28
25
  create_table :metrics, force: true do |t|
@@ -52,7 +49,9 @@ class MetricMailer < ActionMailer::Base
52
49
  end
53
50
 
54
51
  class Metric < ActiveRecord::Base; end
52
+
55
53
  class ApplicationController < ActionController::Base; end
54
+
56
55
  class MetricsController < ApplicationController
57
56
  prepend_view_path File.join(__dir__, "..", "views")
58
57
 
@@ -77,7 +76,7 @@ end
77
76
 
78
77
  class ExceptionsController < ApplicationController
79
78
  def index
80
- 1 / 0
79
+ raise ActiveRecord::RecordNotFound
81
80
  end
82
81
  end
83
82