Skip to content

Commit c56b80c

Browse files
authored
Merge pull request #110 from amazing-print/ext-loader
2 parents 7760939 + b517cf0 commit c56b80c

File tree

3 files changed

+34
-10
lines changed

3 files changed

+34
-10
lines changed

lib/amazing_print.rb

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,6 @@
3333
require_relative 'amazing_print/ext/action_view'
3434
end
3535
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
4338
end
44-
# test

lib/amazing_print/ext_loader.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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

lib/amazing_print/inspector.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
# See LICENSE file or http://www.opensource.org/licenses/mit-license.php
77
#------------------------------------------------------------------------------
88

9-
# rubocop:disable Metrics/ClassLength
9+
# rubocop:disable Metrics/ClassLength, Metrics/MethodLength
1010

1111
require_relative 'indentator'
12+
require_relative 'ext_loader'
1213

1314
module AmazingPrint
1415
class Inspector
@@ -70,6 +71,8 @@ def initialize(options = {})
7071
@formatter = AmazingPrint::Formatter.new(self)
7172
@indentator = AmazingPrint::Indentator.new(@options[:indent].abs)
7273
Thread.current[AP] ||= []
74+
75+
ExtLoader.call
7376
end
7477

7578
def current_indentation
@@ -196,4 +199,4 @@ def merge_custom_defaults!
196199
end
197200
end
198201

199-
# rubocop:enable Metrics/ClassLength
202+
# rubocop:enable Metrics/ClassLength, Metrics/MethodLength

0 commit comments

Comments
 (0)