Skip to content

Commit 6517dc3

Browse files
committed
Add location to RenderSubscriber
To know where from which controller action the template was rendered.
1 parent 32e9960 commit 6517dc3

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

lib/influxdb/rails/middleware/render_subscriber.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,20 @@ def call(_name, started, finished, _unique_id, payload)
3030

3131
private
3232

33+
def location
34+
[
35+
Thread.current[:_influxdb_rails_controller],
36+
Thread.current[:_influxdb_rails_action],
37+
].reject(&:blank?).join("#")
38+
end
39+
3340
def tags(payload)
3441
{
42+
location: location,
3543
filename: payload[:identifier],
3644
count: payload[:count],
3745
cache_hits: payload[:cache_hits],
38-
}.reject { |_, value| value.nil? }
46+
}.reject { |_, value| value.blank? }
3947
end
4048
end
4149
end

lib/influxdb/rails/middleware/request_subscriber.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ def call(_name, start, finish, _id, payload)
2424
end
2525
rescue StandardError => e
2626
log :error, "[InfluxDB::Rails] Unable to write points: #{e.message}"
27+
ensure
28+
Thread.current[:_influxdb_rails_controller] = nil
29+
Thread.current[:_influxdb_rails_action] = nil
2730
end
2831
end
2932

lib/influxdb/rails/railtie.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ class Railtie < ::Rails::Railtie # :nodoc:
2222
::ActionDispatch::DebugExceptions.prepend InfluxDB::Rails::Middleware::HijackRenderException
2323

2424
if defined?(ActiveSupport::Notifications)
25+
ActiveSupport::Notifications.subscribe "start_processing.action_controller" do |name, start, finish, id, payload|
26+
Thread.current[:_influxdb_rails_controller] = payload[:controller]
27+
Thread.current[:_influxdb_rails_action] = payload[:action]
28+
end
29+
2530
config = InfluxDB::Rails.configuration
2631
request_subsriber = Middleware::RequestSubscriber.new(config)
2732
ActiveSupport::Notifications.subscribe "process_action.action_controller", request_subsriber

spec/unit/middleware/render_subscriber_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
tags:
2525
{
2626
filename: "index.html",
27+
location: "Foo#bar",
2728
count: 43,
2829
cache_hits: 42
2930
},
@@ -33,6 +34,16 @@
3334

3435
subject { described_class.new(config, series_name) }
3536

37+
before do
38+
Thread.current[:_influxdb_rails_controller] = "Foo"
39+
Thread.current[:_influxdb_rails_action] = "bar"
40+
end
41+
42+
after do
43+
Thread.current[:_influxdb_rails_action] = nil
44+
Thread.current[:_influxdb_rails_controller] = nil
45+
end
46+
3647
context 'successfully' do
3748
it "writes to InfluxDB" do
3849
expect_any_instance_of(InfluxDB::Client).to receive(:write_point).with(

0 commit comments

Comments
 (0)