as_deprecation_tracker 1.3.0 → 1.4.0
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/README.md +10 -0
- data/lib/as_deprecation_tracker.rb +17 -0
- data/lib/as_deprecation_tracker/railtie.rb +1 -1
- data/lib/as_deprecation_tracker/receiver.rb +14 -0
- data/lib/as_deprecation_tracker/version.rb +1 -1
- data/lib/as_deprecation_tracker/whitelist_entry.rb +1 -1
- data/test/as_deprecation_tracker_test.rb +28 -0
- data/test/receiver_test.rb +31 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d01e6823baf38e699a6de7c4d27391d9f8f6a00
|
4
|
+
data.tar.gz: f95996a72dd62db5cd33f8cc8a9f0ee5e7686454
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b649d6be7f3273fe8400ff28dc6162402b4cc744b47136b355b5648e9a1a27494f2d21c2d7e4c92b0aec10c7009b94882ce21e8cffc522ee8e2eb4f06b7d386
|
7
|
+
data.tar.gz: 80fdb221aa9b693793740b511190a090a895881dec79d0b78ebd1d8c70ce9b18f80aaf49ef0a97a7ecc3135a4a8d82043799f4cd7f106562e23f9b05fa77fe71
|
data/README.md
CHANGED
@@ -119,6 +119,16 @@ Supported options:
|
|
119
119
|
* `whitelist_file` to customise the location of the whitelist YAML file
|
120
120
|
(defaults to `config/as_deprecation_whitelist.yaml`)
|
121
121
|
|
122
|
+
### Pause/resume
|
123
|
+
|
124
|
+
The processing of deprecation warnings can be suspended and resumed via the
|
125
|
+
`ASDeprecationTracker.pause!` and `ASDeprecationTracker.resume!` methods.
|
126
|
+
|
127
|
+
This is useful when programmatically building whitelist entries during Rails
|
128
|
+
initialisation, as deprecation processing can be disabled until the whitelist
|
129
|
+
is fully formed. ASDT will queue events while paused and processes them when
|
130
|
+
`resume!` is called.
|
131
|
+
|
122
132
|
## License
|
123
133
|
|
124
134
|
Copyright (c) 2016-2017 Dominic Cleal. Distributed under the MIT license.
|
@@ -14,6 +14,23 @@ module ASDeprecationTracker
|
|
14
14
|
@config ||= Configuration.new
|
15
15
|
end
|
16
16
|
|
17
|
+
def self.pause!
|
18
|
+
@running = false
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.receiver
|
22
|
+
@receiver ||= Receiver.new
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.resume!
|
26
|
+
@running = true
|
27
|
+
@receiver.try!(:process_queue)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.running?
|
31
|
+
@running.nil? || @running
|
32
|
+
end
|
33
|
+
|
17
34
|
def self.whitelist
|
18
35
|
@whitelist ||= Whitelist.new
|
19
36
|
end
|
@@ -5,7 +5,7 @@ module ASDeprecationTracker
|
|
5
5
|
# Railtie to register for deprecation notifications
|
6
6
|
class Railtie < ::Rails::Railtie
|
7
7
|
initializer 'as_deprecation_tracker.deprecation_notifications', after: :load_environment_config, if: -> { ASDeprecationTracker.active? } do
|
8
|
-
Receiver.attach_to :rails
|
8
|
+
Receiver.attach_to :rails, ASDeprecationTracker.receiver
|
9
9
|
ActiveSupport::Deprecation.behavior = :notify if ASDeprecationTracker.config.register_behavior?
|
10
10
|
|
11
11
|
whitelist = ASDeprecationTracker.config.whitelist_file
|
@@ -5,7 +5,21 @@ require 'as_deprecation_tracker/writer'
|
|
5
5
|
module ASDeprecationTracker
|
6
6
|
# Receives deprecation.rails events via ActiveSupport::Notifications
|
7
7
|
class Receiver < ::ActiveSupport::Subscriber
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
@event_queue = []
|
11
|
+
end
|
12
|
+
|
8
13
|
def deprecation(event)
|
14
|
+
@event_queue << event
|
15
|
+
process_queue if ASDeprecationTracker.running?
|
16
|
+
end
|
17
|
+
|
18
|
+
def process_queue
|
19
|
+
process_event(@event_queue.pop) until @event_queue.empty?
|
20
|
+
end
|
21
|
+
|
22
|
+
def process_event(event)
|
9
23
|
return if ASDeprecationTracker.whitelist.matches?(event.payload)
|
10
24
|
|
11
25
|
message = event.payload[:message]
|
@@ -75,7 +75,7 @@ module ASDeprecationTracker
|
|
75
75
|
def engine_root(engine_name)
|
76
76
|
::Rails::Engine.descendants.each do |engine|
|
77
77
|
begin
|
78
|
-
return engine.root.to_s if engine_name == engine.engine_name
|
78
|
+
return engine.root.to_s if engine_name.to_s == engine.engine_name.to_s
|
79
79
|
rescue NoMethodError, RuntimeError # rubocop:disable Lint/HandleExceptions
|
80
80
|
# Ignore failures with singleton engine subclasses etc.
|
81
81
|
end
|
@@ -21,6 +21,34 @@ class ASDeprecationTrackerTest < ASDeprecationTracker::TestCase
|
|
21
21
|
assert_equal config, ASDeprecationTracker.config
|
22
22
|
end
|
23
23
|
|
24
|
+
def test_pause!
|
25
|
+
ASDeprecationTracker.pause!
|
26
|
+
refute ASDeprecationTracker.running?
|
27
|
+
ensure
|
28
|
+
ASDeprecationTracker.resume!
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_receiver
|
32
|
+
assert_kind_of ASDeprecationTracker::Receiver, ASDeprecationTracker.receiver
|
33
|
+
assert_kind_of ActiveSupport::Subscriber, ASDeprecationTracker.receiver
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_receiver_returns_same_receiver
|
37
|
+
receiver = ASDeprecationTracker.receiver
|
38
|
+
assert_equal receiver, ASDeprecationTracker.receiver
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_resume!
|
42
|
+
ASDeprecationTracker.pause!
|
43
|
+
ASDeprecationTracker.receiver.expects(:process_queue)
|
44
|
+
ASDeprecationTracker.resume!
|
45
|
+
assert ASDeprecationTracker.running?
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_running
|
49
|
+
assert_equal true, ASDeprecationTracker.running?
|
50
|
+
end
|
51
|
+
|
24
52
|
def test_whitelist
|
25
53
|
assert_kind_of ASDeprecationTracker::Whitelist, ASDeprecationTracker.whitelist
|
26
54
|
end
|
data/test/receiver_test.rb
CHANGED
@@ -2,27 +2,43 @@
|
|
2
2
|
require 'test_helper'
|
3
3
|
|
4
4
|
class ReceiverTest < ASDeprecationTracker::TestCase
|
5
|
-
def
|
5
|
+
def test_deprecation_when_running
|
6
|
+
ASDeprecationTracker.expects(:running?).returns(true)
|
7
|
+
receiver = ASDeprecationTracker::Receiver.new
|
8
|
+
event = mock('event')
|
9
|
+
receiver.expects(:process_event).with(event)
|
10
|
+
receiver.deprecation(event)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_deprecation_when_not_running
|
14
|
+
ASDeprecationTracker.expects(:running?).returns(false)
|
15
|
+
receiver = ASDeprecationTracker::Receiver.new
|
16
|
+
event = mock('event')
|
17
|
+
receiver.expects(:process_event).never
|
18
|
+
receiver.deprecation(event)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_process_event_whitelisted
|
6
22
|
whitelist = ASDeprecationTracker::Whitelist.new
|
7
23
|
ASDeprecationTracker.expects(:whitelist).returns(whitelist)
|
8
24
|
stack = caller
|
9
25
|
whitelist.expects(:matches?).with(message: 'deprecated call', callstack: stack).returns(true)
|
10
|
-
ASDeprecationTracker::Receiver.new.
|
26
|
+
ASDeprecationTracker::Receiver.new.process_event(event(message: 'deprecated call', callstack: stack))
|
11
27
|
end
|
12
28
|
|
13
|
-
def
|
29
|
+
def test_process_event_unknown
|
14
30
|
whitelist = ASDeprecationTracker::Whitelist.new
|
15
31
|
ASDeprecationTracker.expects(:whitelist).returns(whitelist)
|
16
32
|
stack = caller
|
17
33
|
whitelist.expects(:matches?).with(message: 'deprecated call', callstack: stack).returns(false)
|
18
34
|
e = assert_raises(ActiveSupport::DeprecationException) do
|
19
|
-
ASDeprecationTracker::Receiver.new.
|
35
|
+
ASDeprecationTracker::Receiver.new.process_event(event(message: 'deprecated call', callstack: stack))
|
20
36
|
end
|
21
37
|
assert_equal 'deprecated call', e.message
|
22
38
|
assert_equal stack, e.backtrace
|
23
39
|
end
|
24
40
|
|
25
|
-
def
|
41
|
+
def test_process_event_unknown_record
|
26
42
|
whitelist = ASDeprecationTracker::Whitelist.new
|
27
43
|
ASDeprecationTracker.expects(:whitelist).twice.returns(whitelist)
|
28
44
|
stack = caller
|
@@ -31,10 +47,19 @@ class ReceiverTest < ASDeprecationTracker::TestCase
|
|
31
47
|
ASDeprecationTracker::Writer.any_instance.expects(:add).with('deprecated call', stack).returns(message: 'deprecated call', callstack: stack.first)
|
32
48
|
ASDeprecationTracker::Writer.any_instance.expects(:write_file)
|
33
49
|
with_env(AS_DEPRECATION_RECORD: 'true') do
|
34
|
-
ASDeprecationTracker::Receiver.new.
|
50
|
+
ASDeprecationTracker::Receiver.new.process_event(event(message: 'deprecated call', callstack: stack))
|
35
51
|
end
|
36
52
|
end
|
37
53
|
|
54
|
+
def test_process_queue
|
55
|
+
ASDeprecationTracker.expects(:running?).returns(false)
|
56
|
+
receiver = ASDeprecationTracker::Receiver.new
|
57
|
+
event = mock('event')
|
58
|
+
receiver.deprecation(event)
|
59
|
+
receiver.expects(:process_event).with(event)
|
60
|
+
receiver.process_queue
|
61
|
+
end
|
62
|
+
|
38
63
|
def test_subscription
|
39
64
|
ASDeprecationTracker::Receiver.any_instance.expects(:deprecation)
|
40
65
|
ActiveSupport::Notifications.instrument('deprecation.rails', message: 'test')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: as_deprecation_tracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dominic Cleal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|