influxdb-rails 1.0.0 → 1.0.1.beta1
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.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +11 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/.travis.yml +4 -7
- data/CHANGELOG.md +17 -0
- data/README.md +47 -5
- data/Rakefile +0 -6
- data/gemfiles/Gemfile.rails-5.0.x +2 -0
- data/gemfiles/Gemfile.rails-6.0.x +10 -0
- data/influxdb-rails.gemspec +5 -3
- data/lib/influxdb-rails.rb +11 -0
- data/lib/influxdb/rails/configuration.rb +8 -12
- data/lib/influxdb/rails/context.rb +6 -40
- data/lib/influxdb/rails/helpers/rspec_matchers.rb +48 -0
- data/lib/influxdb/rails/metric.rb +39 -0
- data/lib/influxdb/rails/middleware/active_job_subscriber.rb +67 -0
- data/lib/influxdb/rails/middleware/active_record_subscriber.rb +26 -0
- data/lib/influxdb/rails/middleware/block_instrumentation_subscriber.rb +24 -0
- data/lib/influxdb/rails/middleware/render_subscriber.rb +15 -16
- data/lib/influxdb/rails/middleware/request_subscriber.rb +16 -21
- data/lib/influxdb/rails/middleware/sql_subscriber.rb +18 -18
- data/lib/influxdb/rails/middleware/subscriber.rb +40 -27
- data/lib/influxdb/rails/railtie.rb +15 -18
- data/lib/influxdb/rails/tags.rb +33 -0
- data/lib/influxdb/rails/test_client.rb +13 -0
- data/lib/influxdb/rails/values.rb +24 -0
- data/lib/influxdb/rails/version.rb +1 -1
- data/sample-dashboard/README.md +1 -1
- data/spec/requests/action_controller_metrics_spec.rb +83 -0
- data/spec/requests/action_view_collection_metrics_spec.rb +66 -0
- data/spec/requests/action_view_partial_metrics_spec.rb +62 -0
- data/spec/requests/action_view_template_metrics_spec.rb +62 -0
- data/spec/requests/active_job_enqueue_metrics_spec.rb +65 -0
- data/spec/requests/active_job_perform_metrics_spec.rb +68 -0
- data/spec/requests/active_job_perform_start_metrics_spec.rb +68 -0
- data/spec/requests/active_record_instantiation_metrics_spec.rb +65 -0
- data/spec/requests/active_record_sql_metrics_spec.rb +103 -0
- data/spec/requests/block_inistrumentation_spec.rb +64 -0
- data/spec/requests/context_spec.rb +27 -0
- data/spec/requests/logger_spec.rb +10 -0
- data/spec/spec_helper.rb +10 -4
- data/spec/support/broken_client.rb +11 -0
- data/spec/support/rails5/app.rb +32 -10
- data/spec/support/rails6/app.rb +70 -0
- data/spec/support/views/{widgets → metrics}/_item.html.erb +0 -0
- data/spec/support/views/{widgets → metrics}/index.html.erb +0 -0
- data/spec/support/views/metrics/show.html.erb +4 -0
- data/spec/unit/block_instrumentation_spec.rb +18 -0
- metadata +87 -37
- data/gemfiles/Gemfile.rails-4.2.x +0 -7
- data/lib/influxdb/rails/instrumentation.rb +0 -34
- data/lib/influxdb/rails/middleware/simple_subscriber.rb +0 -33
- data/spec/controllers/widgets_controller_spec.rb +0 -15
- data/spec/integration/integration_helper.rb +0 -1
- data/spec/integration/metrics_spec.rb +0 -27
- data/spec/shared_examples/data.rb +0 -61
- data/spec/support/rails4/app.rb +0 -48
- data/spec/unit/context_spec.rb +0 -40
- data/spec/unit/middleware/render_subscriber_spec.rb +0 -96
- data/spec/unit/middleware/request_subscriber_spec.rb +0 -103
- data/spec/unit/middleware/sql_subscriber_spec.rb +0 -108
@@ -0,0 +1,70 @@
|
|
1
|
+
require "action_controller/railtie"
|
2
|
+
require "active_record/railtie"
|
3
|
+
require "active_job"
|
4
|
+
|
5
|
+
app = Class.new(Rails::Application)
|
6
|
+
app.config.secret_key_base = "1234567890abcdef1234567890abcdef"
|
7
|
+
app.config.secret_token = "1234567890abcdef1234567890abcdef"
|
8
|
+
app.config.session_store :cookie_store, key: "_myapp_session"
|
9
|
+
app.config.active_support.deprecation = :log
|
10
|
+
app.config.eager_load = false
|
11
|
+
app.config.root = __dir__
|
12
|
+
Rails.backtrace_cleaner.remove_silencers!
|
13
|
+
ActiveJob::Base.logger = Rails.logger
|
14
|
+
app.initialize!
|
15
|
+
|
16
|
+
app.routes.draw do
|
17
|
+
resources :metrics, only: %i[index show]
|
18
|
+
resources :exceptions, only: :index
|
19
|
+
end
|
20
|
+
|
21
|
+
InfluxDB::Rails.configure do |config|
|
22
|
+
end
|
23
|
+
|
24
|
+
ENV["DATABASE_URL"] = "sqlite3::memory:"
|
25
|
+
ActiveRecord::Schema.define do
|
26
|
+
create_table :metrics, force: true do |t|
|
27
|
+
t.string :name
|
28
|
+
|
29
|
+
t.timestamps
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class MetricJob < ActiveJob::Base
|
34
|
+
queue_as :default
|
35
|
+
|
36
|
+
def perform
|
37
|
+
# Do something later
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class Metric < ActiveRecord::Base; end
|
42
|
+
class ApplicationController < ActionController::Base; end
|
43
|
+
class MetricsController < ApplicationController
|
44
|
+
prepend_view_path File.join(__dir__, "..", "views")
|
45
|
+
|
46
|
+
before_action do
|
47
|
+
InfluxDB::Rails.current.values = { additional_value: :value }
|
48
|
+
InfluxDB::Rails.current.tags = { additional_tag: :value }
|
49
|
+
end
|
50
|
+
|
51
|
+
def index
|
52
|
+
InfluxDB::Rails.instrument "name", tags: { block_tag: :block_tag }, values: { block_value: :block_value } do
|
53
|
+
1 + 1
|
54
|
+
end
|
55
|
+
MetricJob.perform_later
|
56
|
+
Metric.create!(name: "name")
|
57
|
+
end
|
58
|
+
|
59
|
+
def show
|
60
|
+
@metric = Metric.find_by(name: "name")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class ExceptionsController < ApplicationController
|
65
|
+
def index
|
66
|
+
1 / 0
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
Object.const_set(:ApplicationHelper, Module.new)
|
File without changes
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe InfluxDB::Rails do
|
4
|
+
describe ".instrument" do
|
5
|
+
it "supports calling wihout a block" do
|
6
|
+
InfluxDB::Rails.instrument "name", values: { value: 1 }
|
7
|
+
|
8
|
+
expect_metric(
|
9
|
+
values: a_hash_including(value: 1),
|
10
|
+
tags: a_hash_including(
|
11
|
+
hook: "block_instrumentation",
|
12
|
+
server: Socket.gethostname,
|
13
|
+
location: :raw
|
14
|
+
)
|
15
|
+
)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: influxdb-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Bruckmayer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-08-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: influxdb
|
@@ -37,14 +37,28 @@ dependencies:
|
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '5.0'
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '5.0'
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: activejob
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
48
62
|
- !ruby/object:Gem::Dependency
|
49
63
|
name: activerecord
|
50
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,6 +101,20 @@ dependencies:
|
|
87
101
|
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: '0'
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: launchy
|
106
|
+
requirement: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
type: :development
|
112
|
+
prerelease: false
|
113
|
+
version_requirements: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
90
118
|
- !ruby/object:Gem::Dependency
|
91
119
|
name: pry
|
92
120
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,16 +203,16 @@ dependencies:
|
|
175
203
|
name: sqlite3
|
176
204
|
requirement: !ruby/object:Gem::Requirement
|
177
205
|
requirements:
|
178
|
-
- -
|
206
|
+
- - ">="
|
179
207
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
208
|
+
version: '0'
|
181
209
|
type: :development
|
182
210
|
prerelease: false
|
183
211
|
version_requirements: !ruby/object:Gem::Requirement
|
184
212
|
requirements:
|
185
|
-
- -
|
213
|
+
- - ">="
|
186
214
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
215
|
+
version: '0'
|
188
216
|
- !ruby/object:Gem::Dependency
|
189
217
|
name: tzinfo
|
190
218
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,6 +235,7 @@ executables: []
|
|
207
235
|
extensions: []
|
208
236
|
extra_rdoc_files: []
|
209
237
|
files:
|
238
|
+
- ".github/dependabot.yml"
|
210
239
|
- ".gitignore"
|
211
240
|
- ".rspec"
|
212
241
|
- ".rubocop.yml"
|
@@ -217,23 +246,29 @@ files:
|
|
217
246
|
- README.md
|
218
247
|
- Rakefile
|
219
248
|
- config.ru
|
220
|
-
- gemfiles/Gemfile.rails-4.2.x
|
221
249
|
- gemfiles/Gemfile.rails-5.0.x
|
222
250
|
- gemfiles/Gemfile.rails-5.1.x
|
223
251
|
- gemfiles/Gemfile.rails-5.2.x
|
252
|
+
- gemfiles/Gemfile.rails-6.0.x
|
224
253
|
- influxdb-rails.gemspec
|
225
254
|
- lib/influxdb-rails.rb
|
226
255
|
- lib/influxdb/rails/configuration.rb
|
227
256
|
- lib/influxdb/rails/context.rb
|
228
|
-
- lib/influxdb/rails/
|
257
|
+
- lib/influxdb/rails/helpers/rspec_matchers.rb
|
258
|
+
- lib/influxdb/rails/metric.rb
|
259
|
+
- lib/influxdb/rails/middleware/active_job_subscriber.rb
|
260
|
+
- lib/influxdb/rails/middleware/active_record_subscriber.rb
|
261
|
+
- lib/influxdb/rails/middleware/block_instrumentation_subscriber.rb
|
229
262
|
- lib/influxdb/rails/middleware/render_subscriber.rb
|
230
263
|
- lib/influxdb/rails/middleware/request_subscriber.rb
|
231
|
-
- lib/influxdb/rails/middleware/simple_subscriber.rb
|
232
264
|
- lib/influxdb/rails/middleware/sql_subscriber.rb
|
233
265
|
- lib/influxdb/rails/middleware/subscriber.rb
|
234
266
|
- lib/influxdb/rails/railtie.rb
|
235
267
|
- lib/influxdb/rails/sql/normalizer.rb
|
236
268
|
- lib/influxdb/rails/sql/query.rb
|
269
|
+
- lib/influxdb/rails/tags.rb
|
270
|
+
- lib/influxdb/rails/test_client.rb
|
271
|
+
- lib/influxdb/rails/values.rb
|
237
272
|
- lib/influxdb/rails/version.rb
|
238
273
|
- lib/rails/generators/influxdb/influxdb_generator.rb
|
239
274
|
- lib/rails/generators/influxdb/templates/initializer.rb
|
@@ -249,20 +284,27 @@ files:
|
|
249
284
|
- sample-dashboard/provisioning/performance-action.json
|
250
285
|
- sample-dashboard/provisioning/performance-request.json
|
251
286
|
- sample-dashboard/provisioning/performance.json
|
252
|
-
- spec/
|
253
|
-
- spec/
|
254
|
-
- spec/
|
255
|
-
- spec/
|
287
|
+
- spec/requests/action_controller_metrics_spec.rb
|
288
|
+
- spec/requests/action_view_collection_metrics_spec.rb
|
289
|
+
- spec/requests/action_view_partial_metrics_spec.rb
|
290
|
+
- spec/requests/action_view_template_metrics_spec.rb
|
291
|
+
- spec/requests/active_job_enqueue_metrics_spec.rb
|
292
|
+
- spec/requests/active_job_perform_metrics_spec.rb
|
293
|
+
- spec/requests/active_job_perform_start_metrics_spec.rb
|
294
|
+
- spec/requests/active_record_instantiation_metrics_spec.rb
|
295
|
+
- spec/requests/active_record_sql_metrics_spec.rb
|
296
|
+
- spec/requests/block_inistrumentation_spec.rb
|
297
|
+
- spec/requests/context_spec.rb
|
298
|
+
- spec/requests/logger_spec.rb
|
256
299
|
- spec/spec_helper.rb
|
257
|
-
- spec/support/
|
300
|
+
- spec/support/broken_client.rb
|
258
301
|
- spec/support/rails5/app.rb
|
259
|
-
- spec/support/
|
260
|
-
- spec/support/views/
|
302
|
+
- spec/support/rails6/app.rb
|
303
|
+
- spec/support/views/metrics/_item.html.erb
|
304
|
+
- spec/support/views/metrics/index.html.erb
|
305
|
+
- spec/support/views/metrics/show.html.erb
|
306
|
+
- spec/unit/block_instrumentation_spec.rb
|
261
307
|
- spec/unit/configuration_spec.rb
|
262
|
-
- spec/unit/context_spec.rb
|
263
|
-
- spec/unit/middleware/render_subscriber_spec.rb
|
264
|
-
- spec/unit/middleware/request_subscriber_spec.rb
|
265
|
-
- spec/unit/middleware/sql_subscriber_spec.rb
|
266
308
|
- spec/unit/sql/normalizer_spec.rb
|
267
309
|
- spec/unit/sql/query_spec.rb
|
268
310
|
homepage: https://influxdata.com
|
@@ -281,31 +323,39 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
281
323
|
requirements:
|
282
324
|
- - ">="
|
283
325
|
- !ruby/object:Gem::Version
|
284
|
-
version: 2.
|
326
|
+
version: 2.4.0
|
285
327
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
286
328
|
requirements:
|
287
|
-
- - "
|
329
|
+
- - ">"
|
288
330
|
- !ruby/object:Gem::Version
|
289
|
-
version:
|
331
|
+
version: 1.3.1
|
290
332
|
requirements: []
|
291
|
-
|
333
|
+
rubyforge_project:
|
334
|
+
rubygems_version: 2.7.6.2
|
292
335
|
signing_key:
|
293
336
|
specification_version: 4
|
294
337
|
summary: InfluxDB bindings for Ruby on Rails.
|
295
338
|
test_files:
|
296
|
-
- spec/
|
297
|
-
- spec/
|
298
|
-
- spec/
|
299
|
-
- spec/
|
339
|
+
- spec/requests/action_controller_metrics_spec.rb
|
340
|
+
- spec/requests/action_view_collection_metrics_spec.rb
|
341
|
+
- spec/requests/action_view_partial_metrics_spec.rb
|
342
|
+
- spec/requests/action_view_template_metrics_spec.rb
|
343
|
+
- spec/requests/active_job_enqueue_metrics_spec.rb
|
344
|
+
- spec/requests/active_job_perform_metrics_spec.rb
|
345
|
+
- spec/requests/active_job_perform_start_metrics_spec.rb
|
346
|
+
- spec/requests/active_record_instantiation_metrics_spec.rb
|
347
|
+
- spec/requests/active_record_sql_metrics_spec.rb
|
348
|
+
- spec/requests/block_inistrumentation_spec.rb
|
349
|
+
- spec/requests/context_spec.rb
|
350
|
+
- spec/requests/logger_spec.rb
|
300
351
|
- spec/spec_helper.rb
|
301
|
-
- spec/support/
|
352
|
+
- spec/support/broken_client.rb
|
302
353
|
- spec/support/rails5/app.rb
|
303
|
-
- spec/support/
|
304
|
-
- spec/support/views/
|
354
|
+
- spec/support/rails6/app.rb
|
355
|
+
- spec/support/views/metrics/_item.html.erb
|
356
|
+
- spec/support/views/metrics/index.html.erb
|
357
|
+
- spec/support/views/metrics/show.html.erb
|
358
|
+
- spec/unit/block_instrumentation_spec.rb
|
305
359
|
- spec/unit/configuration_spec.rb
|
306
|
-
- spec/unit/context_spec.rb
|
307
|
-
- spec/unit/middleware/render_subscriber_spec.rb
|
308
|
-
- spec/unit/middleware/request_subscriber_spec.rb
|
309
|
-
- spec/unit/middleware/sql_subscriber_spec.rb
|
310
360
|
- spec/unit/sql/normalizer_spec.rb
|
311
361
|
- spec/unit/sql/query_spec.rb
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module InfluxDB
|
2
|
-
module Rails
|
3
|
-
module Instrumentation
|
4
|
-
def benchmark_for_instrumentation # rubocop:disable Metrics/MethodLength
|
5
|
-
start = Time.now
|
6
|
-
yield
|
7
|
-
|
8
|
-
c = InfluxDB::Rails.configuration
|
9
|
-
return if c.ignore_current_environment?
|
10
|
-
|
11
|
-
InfluxDB::Rails.client.write_point \
|
12
|
-
"instrumentation".freeze,
|
13
|
-
values: {
|
14
|
-
value: ((Time.now - start) * 1000).ceil,
|
15
|
-
},
|
16
|
-
tags: c.tags_middleware.call(
|
17
|
-
method: "#{controller_name}##{action_name}",
|
18
|
-
server: Socket.gethostname
|
19
|
-
)
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.included(base)
|
23
|
-
base.extend(ClassMethods)
|
24
|
-
end
|
25
|
-
|
26
|
-
module ClassMethods
|
27
|
-
def instrument(methods = [])
|
28
|
-
methods = [methods] unless methods.is_a?(Array)
|
29
|
-
around_filter :benchmark_for_instrumentation, only: methods
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require "influxdb/rails/middleware/subscriber"
|
2
|
-
|
3
|
-
module InfluxDB
|
4
|
-
module Rails
|
5
|
-
module Middleware
|
6
|
-
# Subscriber acts as base class for different *Subscriber classes,
|
7
|
-
# which are intended as ActiveSupport::Notifications.subscribe
|
8
|
-
# consumers.
|
9
|
-
class SimpleSubscriber < Subscriber
|
10
|
-
def call(_name, started, finished, _id, payload)
|
11
|
-
return unless enabled?
|
12
|
-
|
13
|
-
InfluxDB::Rails.client.write_point \
|
14
|
-
configuration.measurement_name,
|
15
|
-
values: values(started, finished, payload),
|
16
|
-
tags: tags(payload),
|
17
|
-
timestamp: timestamp(finished)
|
18
|
-
rescue StandardError => e
|
19
|
-
::Rails.logger.error("[InfluxDB::Rails] Unable to write points: #{e.message}")
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def values(started, finished, _payload)
|
25
|
-
result = { value: ((finished - started) * 1000).ceil }
|
26
|
-
result.merge(InfluxDB::Rails.current.values).reject do |_, value|
|
27
|
-
value.nil? || value == ""
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe WidgetsController, type: :controller do
|
4
|
-
describe "#new" do
|
5
|
-
it "should raise an exception" do
|
6
|
-
expect { get :new }.to raise_error(ZeroDivisionError)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "#index" do
|
11
|
-
it "should not raise an exception" do
|
12
|
-
expect { get :index }.to_not raise_error
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/../spec_helper"
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/integration_helper")
|
2
|
-
|
3
|
-
RSpec.describe "User visits widgets", 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
|
-
describe "in a normal request" do
|
9
|
-
it "should result in attempts to write metrics via the client" do
|
10
|
-
expect(InfluxDB::Rails.client).to receive(:write_point).exactly(5).times
|
11
|
-
get "/widgets"
|
12
|
-
end
|
13
|
-
|
14
|
-
context "additional values" do
|
15
|
-
it "should result in attempts to write metrics via the client" do
|
16
|
-
allow_any_instance_of(ActionDispatch::Request).to receive(:request_id).and_return(:request_id)
|
17
|
-
expect(InfluxDB::Rails.client).to receive(:write_point).with(
|
18
|
-
"rails", a_hash_including(
|
19
|
-
tags: a_hash_including(method: "WidgetsController#index", hook: "process_action"),
|
20
|
-
values: a_hash_including(request_id: :request_id, key: :value)
|
21
|
-
)
|
22
|
-
)
|
23
|
-
get "/widgets"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|