Skip to content
This repository was archived by the owner on Apr 10, 2025. It is now read-only.

Commit 7df4d5c

Browse files
authored
Merge pull request #103 from ChrisBr/refactoring
Several refactorings
2 parents 4c5ea1e + 2e9c63e commit 7df4d5c

11 files changed

+49
-24
lines changed

lib/influxdb/rails/metric.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ def write
1616
return unless enabled?
1717

1818
client.write_point configuration.measurement_name, options
19-
rescue StandardError => e
20-
::Rails.logger.error("[InfluxDB::Rails] Unable to write points: #{e.message}")
2119
end
2220

2321
private

lib/influxdb/rails/middleware/subscriber.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ def initialize(configuration, hook_name)
1616
end
1717

1818
def call(_name, start, finish, _id, payload)
19+
write_metric(start, finish, payload)
20+
rescue StandardError => e
21+
::Rails.logger.error("[InfluxDB::Rails] Unable to write points: #{e.message}")
22+
end
23+
24+
private
25+
26+
def write_metric(start, finish, payload)
1927
InfluxDB::Rails::Metric.new(
2028
values: values(start, finish, payload),
2129
tags: tags(payload),
@@ -25,8 +33,6 @@ def call(_name, start, finish, _id, payload)
2533
).write
2634
end
2735

28-
private
29-
3036
def tags(*)
3137
raise NotImplementedError, "must be implemented in subclass"
3238
end

spec/requests/action_controller_metrics_spec.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
end
88
end
99
before do
10-
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:ignored_environments).and_return(%w[development])
1110
allow_any_instance_of(ActionDispatch::Request).to receive(:request_id).and_return(:request_id)
1211
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:application_name).and_return(:app_name)
1312
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:tags_middleware).and_return(tags_middleware)

spec/requests/action_view_collection_metrics_spec.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
end
88
end
99
before do
10-
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:ignored_environments).and_return(%w[development])
1110
allow_any_instance_of(ActionDispatch::Request).to receive(:request_id).and_return(:request_id)
1211
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:application_name).and_return(:app_name)
1312
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:tags_middleware).and_return(tags_middleware)

spec/requests/action_view_partial_metrics_spec.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
end
88
end
99
before do
10-
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:ignored_environments).and_return(%w[development])
1110
allow_any_instance_of(ActionDispatch::Request).to receive(:request_id).and_return(:request_id)
1211
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:application_name).and_return(:app_name)
1312
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:tags_middleware).and_return(tags_middleware)

spec/requests/action_view_template_metrics_spec.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
end
88
end
99
before do
10-
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:ignored_environments).and_return(%w[development])
1110
allow_any_instance_of(ActionDispatch::Request).to receive(:request_id).and_return(:request_id)
1211
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:application_name).and_return(:app_name)
1312
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:tags_middleware).and_return(tags_middleware)

spec/requests/active_record_metrics_spec.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
end
88
end
99
before do
10-
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:ignored_environments).and_return(%w[development])
1110
allow_any_instance_of(ActionDispatch::Request).to receive(:request_id).and_return(:request_id)
1211
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:application_name).and_return(:app_name)
1312
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:tags_middleware).and_return(tags_middleware)

spec/requests/context_spec.rb

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,27 @@
11
require File.dirname(__FILE__) + "/../spec_helper"
22

33
RSpec.describe "Context", type: :request do
4-
before do
5-
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:ignored_environments).and_return(%w[development])
6-
end
7-
8-
it "resets the context between requests" do
4+
it "resets the context after a request" do
95
get "/metrics"
106

117
expect_metric(
128
tags: a_hash_including(
13-
method: "MetricsController#index",
14-
hook: "process_action"
9+
location: "MetricsController#index",
10+
hook: "sql"
1511
)
1612
)
1713

18-
get "/exceptions"
14+
expect(InfluxDB::Rails.current.tags).to be_empty
15+
expect(InfluxDB::Rails.current.values).to be_empty
16+
end
1917

20-
expect_metric(
21-
name: "rails",
22-
tags: a_hash_including(
23-
method: "ExceptionsController#index",
24-
hook: "process_action"
25-
)
26-
)
18+
it "resets the context after a request when exceptioni occurs" do
19+
setup_broken_client
20+
21+
get "/metrics"
22+
23+
expect_no_metric(hook: "process_action")
24+
expect(InfluxDB::Rails.current.tags).to be_empty
25+
expect(InfluxDB::Rails.current.values).to be_empty
2726
end
2827
end

spec/requests/logger_spec.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
require File.dirname(__FILE__) + "/../spec_helper"
2+
3+
RSpec.describe "Logger", type: :request do
4+
it "logs exception" do
5+
setup_broken_client
6+
expect(Rails.logger).to receive(:error).with(/message/).at_least(:once)
7+
8+
get "/metrics"
9+
end
10+
end

spec/spec_helper.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
$LOAD_PATH.unshift(File.dirname(__FILE__))
33
require "active_support"
44
require File.expand_path(File.dirname(__FILE__) + "/support/matchers")
5+
require File.expand_path(File.dirname(__FILE__) + "/support/broken_client")
56

67
ENV["RAILS_ENV"] ||= "test"
78

@@ -34,6 +35,8 @@
3435
InfluxDB::Rails.configure
3536

3637
allow(InfluxDB::Rails).to receive(:client).and_return(InfluxDB::Rails::TestClient.new)
38+
allow_any_instance_of(InfluxDB::Rails::Configuration).to receive(:ignored_environments).and_return(%w[development])
39+
3740
InfluxDB::Rails::TestClient.metrics.clear
3841
end
3942

@@ -43,4 +46,5 @@
4346

4447
config.include ActiveSupport::Testing::TimeHelpers
4548
config.include InfluxDB::Rails::Matchers
49+
config.include InfluxDB::Rails::BrokenClient
4650
end

spec/support/broken_client.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
require File.expand_path(File.dirname(__FILE__) + "/test_client")
2+
3+
module InfluxDB
4+
module Rails
5+
module BrokenClient
6+
def setup_broken_client
7+
client = double
8+
allow(client).to receive(:write_point).and_raise("message")
9+
allow(InfluxDB::Rails).to receive(:client).and_return(client)
10+
end
11+
end
12+
end
13+
end

0 commit comments

Comments
 (0)