as_deprecation_tracker 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|