Skip to content

Commit d18e80c

Browse files
authored
feat: migrate from ActiveSupport::Autoload to Zeitwerk (#457)
1 parent 7855ade commit d18e80c

File tree

8 files changed

+13
-92
lines changed

8 files changed

+13
-92
lines changed

closure_tree.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Gem::Specification.new do |gem|
2727

2828
gem.add_dependency 'activerecord', '>= 7.2.0'
2929
gem.add_dependency 'with_advisory_lock', '>= 7.0.0'
30+
gem.add_dependency 'zeitwerk', '~> 2.7'
3031

3132
gem.add_development_dependency 'database_cleaner'
3233
gem.add_development_dependency 'minitest'

lib/closure_tree.rb

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,22 @@
11
# frozen_string_literal: true
22

33
require 'active_record'
4+
require 'zeitwerk'
45

5-
module ClosureTree
6-
extend ActiveSupport::Autoload
7-
8-
autoload :HasClosureTree
9-
autoload :HasClosureTreeRoot
10-
autoload :Support
11-
autoload :HierarchyMaintenance
12-
autoload :Model
13-
autoload :Finders
14-
autoload :HashTree
15-
autoload :Digraphs
16-
autoload :DeterministicOrdering
17-
autoload :NumericDeterministicOrdering
18-
autoload :Configuration
19-
autoload :AdapterSupport
6+
loader = Zeitwerk::Loader.for_gem
7+
loader.ignore("#{__dir__}/generators")
8+
loader.setup
209

10+
module ClosureTree
2111
def self.configure
22-
yield configuration
12+
ActiveSupport::Deprecation.new.warn(
13+
'ClosureTree.configure is deprecated and will be removed in a future version. ' \
14+
'Configuration is no longer needed.'
15+
)
16+
yield if block_given?
2317
end
24-
25-
def self.configuration
26-
@configuration ||= Configuration.new
27-
end
28-
end
29-
30-
ActiveSupport.on_load :active_record do
31-
ActiveRecord::Base.extend ClosureTree::HasClosureTree
32-
ActiveRecord::Base.extend ClosureTree::HasClosureTreeRoot
33-
end
34-
35-
# Adapter injection for different database types
36-
ActiveSupport.on_load :active_record_postgresqladapter do
37-
prepend ClosureTree::AdapterSupport
38-
end
39-
40-
ActiveSupport.on_load :active_record_mysql2adapter do
41-
prepend ClosureTree::AdapterSupport
42-
end
43-
44-
ActiveSupport.on_load :active_record_trilogyadapter do
45-
prepend ClosureTree::AdapterSupport
4618
end
4719

48-
ActiveSupport.on_load :active_record_sqlite3adapter do
49-
prepend ClosureTree::AdapterSupport
20+
ActiveSupport.on_load(:active_record) do
21+
extend ClosureTree::HasClosureTree, ClosureTree::HasClosureTreeRoot
5022
end

lib/closure_tree/adapter_support.rb

Lines changed: 0 additions & 11 deletions
This file was deleted.

lib/closure_tree/configuration.rb

Lines changed: 0 additions & 11 deletions
This file was deleted.

lib/closure_tree/has_closure_tree.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ def has_closure_tree(options = {})
3636
include ClosureTree::NumericDeterministicOrdering if _ct.order_is_numeric?
3737

3838
connection_pool.release_connection
39-
rescue StandardError => e
40-
raise e unless ClosureTree.configuration.database_less
4139
end
4240

4341
alias acts_as_tree has_closure_tree

lib/closure_tree/support.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
# frozen_string_literal: true
22

3-
require 'closure_tree/support_flags'
4-
require 'closure_tree/support_attributes'
5-
require 'closure_tree/numeric_order_support'
6-
require 'closure_tree/active_record_support'
7-
require 'closure_tree/hash_tree_support'
8-
require 'closure_tree/arel_helpers'
9-
103
# This class and mixins are an effort to reduce the namespace pollution to models that act_as_tree.
114
module ClosureTree
125
class Support

lib/generators/closure_tree/config_generator.rb

Lines changed: 0 additions & 14 deletions
This file was deleted.

lib/generators/closure_tree/templates/config.rb

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)