File tree Expand file tree Collapse file tree 3 files changed +34
-10
lines changed Expand file tree Collapse file tree 3 files changed +34
-10
lines changed Original file line number Diff line number Diff line change 33
33
require_relative 'amazing_print/ext/action_view'
34
34
end
35
35
end
36
- require_relative 'amazing_print/ext/mongo_mapper' if defined? ( MongoMapper )
37
- require_relative 'amazing_print/ext/mongoid' if defined? ( Mongoid )
38
- require_relative 'amazing_print/ext/nokogiri' if defined? ( Nokogiri )
39
- require_relative 'amazing_print/ext/nobrainer' if defined? ( NoBrainer )
40
- require_relative 'amazing_print/ext/ripple' if defined? ( Ripple )
41
- require_relative 'amazing_print/ext/sequel' if defined? ( Sequel )
42
- require_relative 'amazing_print/ext/ostruct' if defined? ( OpenStruct )
36
+
37
+ AmazingPrint ::ExtLoader . call
43
38
end
44
- # test
Original file line number Diff line number Diff line change
1
+ # frozen_string_literal: true
2
+
3
+ module AmazingPrint
4
+ ##
5
+ # Attempt to load extensions up to 3 times since this library may be required
6
+ # before dependencies that we have extensions for.
7
+ #
8
+ class ExtLoader
9
+ EXT_LOAD_ATTEMPT_LIMIT = 3
10
+
11
+ @load_attemps = 0
12
+
13
+ def self . call
14
+ return if @load_attemps >= EXT_LOAD_ATTEMPT_LIMIT
15
+
16
+ require_relative 'ext/mongo_mapper' if defined? ( MongoMapper )
17
+ require_relative 'ext/mongoid' if defined? ( Mongoid )
18
+ require_relative 'ext/nobrainer' if defined? ( NoBrainer )
19
+ require_relative 'ext/nokogiri' if defined? ( Nokogiri )
20
+ require_relative 'ext/ostruct' if defined? ( OpenStruct ) # rubocop:disable Style/OpenStructUse
21
+ require_relative 'ext/ripple' if defined? ( Ripple )
22
+ require_relative 'ext/sequel' if defined? ( Sequel )
23
+
24
+ @load_attemps += 1
25
+ end
26
+ end
27
+ end
Original file line number Diff line number Diff line change 6
6
# See LICENSE file or http://www.opensource.org/licenses/mit-license.php
7
7
#------------------------------------------------------------------------------
8
8
9
- # rubocop:disable Metrics/ClassLength
9
+ # rubocop:disable Metrics/ClassLength, Metrics/MethodLength
10
10
11
11
require_relative 'indentator'
12
+ require_relative 'ext_loader'
12
13
13
14
module AmazingPrint
14
15
class Inspector
@@ -70,6 +71,8 @@ def initialize(options = {})
70
71
@formatter = AmazingPrint ::Formatter . new ( self )
71
72
@indentator = AmazingPrint ::Indentator . new ( @options [ :indent ] . abs )
72
73
Thread . current [ AP ] ||= [ ]
74
+
75
+ ExtLoader . call
73
76
end
74
77
75
78
def current_indentation
@@ -196,4 +199,4 @@ def merge_custom_defaults!
196
199
end
197
200
end
198
201
199
- # rubocop:enable Metrics/ClassLength
202
+ # rubocop:enable Metrics/ClassLength, Metrics/MethodLength
You can’t perform that action at this time.
0 commit comments