brick 1.0.124 → 1.0.125

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44fce70a53b4467d019ca42a9826f44a4849d472dcbfc2fe324f961708b70a18
4
- data.tar.gz: 2674709f203786560b41c1bf1e2062336cf88282d168848303e9920b398662e3
3
+ metadata.gz: dc3caefac264427d0a4a7efa11160fc3b7c1cc6c82afa01bf7340941dbab18e1
4
+ data.tar.gz: 7d9aebd13fe256d43ee3ec24f94065a64ab4955e3ee379023352013db59fe3ba
5
5
  SHA512:
6
- metadata.gz: 337760a0382fd37a64026a07d80e708f9f475f73e8ca420d05341b731c977ab9153556803f10314a4851730e28a22ce4847705e2d8ad81121a8f33736f505f12
7
- data.tar.gz: 04a1e5ec1cc503173da16be708d611f9fb1dd6f3965e6e848dfd1e310f3e1c94b396c8e693982d8f3c3589b5d8ffbfee70fd52593918e12ecd8309c8e110b4c5
6
+ metadata.gz: c02e8bdceca8f726d24a8f7eddb6057427d2e31c3db3934bd72da0393509aaf2d5e7246ba65e8bdd773fc3d995c538567137dec729eb2d062ba0f7e006ace7c6
7
+ data.tar.gz: c6061b00b761638ebd0f9750423643615c08dffb9c62bec423d1bf5c047dcfa82c9b2bccaea1491d9f7a4c23932b9299be1254e708e26ca624165a5695557c63
@@ -68,6 +68,12 @@ module ActiveRecord
68
68
  self
69
69
  end
70
70
  end
71
+
72
+ def json_column?(col)
73
+ col.type == :json || ::Brick.config.json_columns[table_name]&.include?(col.name) ||
74
+ ((attr_types = attribute_types[col.name]).respond_to?(:coder) &&
75
+ (attr_types.coder.is_a?(Class) ? attr_types.coder : attr_types.coder&.class)&.name&.end_with?('JSON'))
76
+ end
71
77
  end
72
78
 
73
79
  def self._brick_primary_key(relation = nil)
@@ -671,7 +677,7 @@ module ActiveRecord
671
677
  link_back << nm
672
678
  num_bt_things += 1
673
679
  # puts "BT #{a.table_name}"
674
- "ON br_t#{idx}.id = br_t#{idx - 1}.#{a.foreign_key}"
680
+ "ON br_t#{idx}.#{a.active_record.primary_key} = br_t#{idx - 1}.#{a.foreign_key}"
675
681
  elsif src_ref.options[:as]
676
682
  "ON br_t#{idx}.#{src_ref.type} = '#{src_ref.active_record.name}'" + # "polymorphable_type"
677
683
  " AND br_t#{idx}.#{src_ref.foreign_key} = br_t#{idx - 1}.id"
@@ -682,11 +688,11 @@ module ActiveRecord
682
688
  bail_out = true
683
689
  break
684
690
  # "ON br_t#{idx}.#{a.foreign_type} = '#{src_ref.options[:source_type]}' AND " \
685
- # "br_t#{idx}.#{a.foreign_key} = br_t#{idx - 1}.id"
691
+ # "br_t#{idx}.#{a.foreign_key} = br_t#{idx - 1}.#{a.active_record.primary_key}"
686
692
  else # Works for HMT through a polymorphic HO
687
693
  link_back << hmt_assoc.source_reflection.inverse_of&.name # Some polymorphic "_able" thing
688
694
  "ON br_t#{idx - 1}.#{a.foreign_type} = '#{src_ref.options[:source_type]}' AND " \
689
- "br_t#{idx - 1}.#{a.foreign_key} = br_t#{idx}.id"
695
+ "br_t#{idx - 1}.#{a.foreign_key} = br_t#{idx}.#{a.active_record.primary_key}"
690
696
  end
691
697
  else # Standard has_many or has_one
692
698
  # puts "HM #{a.table_name}"
@@ -694,7 +700,7 @@ module ActiveRecord
694
700
  nm = hmt_assoc.source_reflection.inverse_of&.name
695
701
  # )
696
702
  link_back << nm # if nm
697
- "ON br_t#{idx}.#{a.foreign_key} = br_t#{idx - 1}.id"
703
+ "ON br_t#{idx}.#{a.foreign_key} = br_t#{idx - 1}.#{a.active_record.primary_key}"
698
704
  end
699
705
  link_back.unshift(a.source_reflection.name)
700
706
  [a.table_name, a.foreign_key, a.source_reflection.macro]
@@ -856,8 +862,7 @@ JOIN (SELECT #{hm_selects.map { |s| "#{'br_t0.' if from_clause}#{s}" }.join(', '
856
862
  alias _brick_find_sti_class find_sti_class
857
863
  def find_sti_class(type_name)
858
864
  if ::Brick.sti_models.key?(type_name ||= name)
859
- # Used to be: ::Brick.sti_models[type_name].fetch(:base, nil) || _brick_find_sti_class(type_name)
860
- _brick_find_sti_class(type_name)
865
+ ::Brick.sti_models[type_name].fetch(:base, nil) || _brick_find_sti_class(type_name)
861
866
  else
862
867
  # This auto-STI is more of a brute-force approach, building modules where needed
863
868
  # The more graceful alternative is the overload of ActiveSupport::Dependencies#autoload_module! found below
@@ -865,9 +870,13 @@ JOIN (SELECT #{hm_selects.map { |s| "#{'br_t0.' if from_clause}#{s}" }.join(', '
865
870
  module_prefixes = type_name.split('::')
866
871
  module_prefixes.unshift('') unless module_prefixes.first.blank?
867
872
  module_name = module_prefixes[0..-2].join('::')
868
- if (snp = ::Brick.config.sti_namespace_prefixes)&.key?("::#{module_name}::") || snp&.key?("#{module_name}::") ||
873
+ if (base_name = ::Brick.config.sti_namespace_prefixes&.fetch("#{module_name}::", nil)) ||
869
874
  File.exist?(candidate_file = ::Rails.root.join('app/models' + module_prefixes.map(&:underscore).join('/') + '.rb'))
870
- _brick_find_sti_class(type_name) # Find this STI class normally
875
+ if base_name
876
+ base_name == "::#{name}" ? self : base_name.constantize
877
+ else
878
+ _brick_find_sti_class(type_name) # Find this STI class normally
879
+ end
871
880
  else
872
881
  # Build missing prefix modules if they don't yet exist
873
882
  this_module = Object
@@ -988,6 +997,8 @@ Module.class_exec do
988
997
  end
989
998
  Object
990
999
  else
1000
+ sti_base = (::Brick.config.sti_namespace_prefixes&.fetch("::#{name}::#{requested}", nil) ||
1001
+ ::Brick.config.sti_namespace_prefixes&.fetch("::#{name}::", nil))&.constantize
991
1002
  self
992
1003
  end
993
1004
  # puts "#{self.name} - #{args.first}"
@@ -995,7 +1006,7 @@ Module.class_exec do
995
1006
  if ((is_defined = self.const_defined?(args.first)) && (possible = self.const_get(args.first)) &&
996
1007
  # Reset `possible` if it's a controller request that's not a perfect match
997
1008
  # Was: (possible = nil) but changed to #local_variable_set in order to suppress the "= should be ==" warning
998
- (possible.name == desired_classname || (is_controller && binding.local_variable_set(:possible, nil)))) ||
1009
+ (possible&.name == desired_classname || (is_controller && binding.local_variable_set(:possible, nil)))) ||
999
1010
  # Try to require the respective Ruby file
1000
1011
  ((filename = ActiveSupport::Dependencies.search_for_file(desired_classname.underscore) ||
1001
1012
  (self != Object && ActiveSupport::Dependencies.search_for_file((desired_classname = requested).underscore))
@@ -1005,9 +1016,11 @@ Module.class_exec do
1005
1016
  # If any class has turned up so far (and we're not in the middle of eager loading)
1006
1017
  # then return what we've found.
1007
1018
  (is_defined && !::Brick.is_eager_loading) # Used to also have: && possible != self
1008
- if (!brick_root && (filename || possible.instance_of?(Class))) ||
1009
- (possible.instance_of?(Module) && possible&.module_parent == self) ||
1010
- (possible.instance_of?(Class) && possible == self) # Are we simply searching for ourselves?
1019
+ if ((!brick_root && (filename || possible.instance_of?(Class))) ||
1020
+ (possible.instance_of?(Module) && possible&.module_parent == self) ||
1021
+ (possible.instance_of?(Class) && possible == self)) && # Are we simply searching for ourselves?
1022
+ # Skip when what we found as `possible` is not related to the base class of an STI model
1023
+ (!sti_base || possible.is_a?(sti_base))
1011
1024
  return possible
1012
1025
  end
1013
1026
  end
@@ -1139,7 +1152,8 @@ class Object
1139
1152
 
1140
1153
  def build_model(relations, base_module, base_name, class_name, inheritable_name = nil)
1141
1154
  tnp = ::Brick.config.table_name_prefixes&.find { |p| p.last == base_module.name }&.first
1142
- if (base_model = ::Brick.config.sti_namespace_prefixes&.fetch("::#{base_module.name}::", nil)&.constantize) || # Are we part of an auto-STI namespace? ...
1155
+ if (base_model = (::Brick.config.sti_namespace_prefixes&.fetch("::#{base_module.name}::#{class_name}", nil) || # Are we part of an auto-STI namespace? ...
1156
+ ::Brick.config.sti_namespace_prefixes&.fetch("::#{base_module.name}::", nil))&.constantize) ||
1143
1157
  base_module != Object # ... or otherwise already in some namespace?
1144
1158
  schema_name = [(singular_schema_name = base_name.underscore),
1145
1159
  (schema_name = singular_schema_name.pluralize),
@@ -1151,7 +1165,6 @@ class Object
1151
1165
  singular_table_name = ActiveSupport::Inflector.underscore(model_name).gsub('/', '.')
1152
1166
 
1153
1167
  if base_model
1154
- schema_name = base_name.underscore # For the auto-STI namespace models
1155
1168
  table_name = base_model.table_name
1156
1169
  build_model_worker(base_module, inheritable_name, model_name, singular_table_name, table_name, relations, table_name)
1157
1170
  else
@@ -1181,7 +1194,7 @@ class Object
1181
1194
  full_name = if relation || schema_name.blank?
1182
1195
  inheritable_name || model_name
1183
1196
  else # Prefix the schema to the table name + prefix the schema namespace to the class name
1184
- schema_module = if schema_name.instance_of?(Module) # from an auto-STI namespace?
1197
+ schema_module = if schema_name.is_a?(Module) # from an auto-STI namespace?
1185
1198
  schema_name
1186
1199
  else
1187
1200
  matching = "#{schema_name}.#{matching}"
@@ -1880,7 +1893,7 @@ class Object
1880
1893
  upd_hash['invitation_accepted_at'] = nil if upd_hash['invitation_accepted_at'].blank?
1881
1894
  end
1882
1895
  end
1883
- if (json_cols = model.columns.select { |c| c.type == :json || json_overrides&.include?(c.name) }.map(&:name)).present?
1896
+ if (json_cols = model.columns.select { |c| model.json_column?(c) }.map(&:name)).present?
1884
1897
  upd_hash ||= upd_params.to_h
1885
1898
  json_cols.each do |c|
1886
1899
  begin
@@ -2682,11 +2695,13 @@ module Brick
2682
2695
  end
2683
2696
  end
2684
2697
  end
2685
- ::Brick.relations.keys.map do |v|
2686
- tbl_parts = v.split('.')
2698
+ ::Brick.relations.map do |k, v|
2699
+ tbl_parts = k.split('.')
2687
2700
  tbl_parts.shift if ::Brick.apartment_multitenant && tbl_parts.length > 1 && tbl_parts.first == ::Brick.apartment_default_tenant
2688
2701
  res = tbl_parts.join('.')
2689
- [v, (model = models[res])&.last&.table_name, migrations&.fetch(res, nil), model&.first]
2702
+ [k, (model = models[res])&.last&.table_name || v[:class_name].constantize.table_name,
2703
+ migrations&.fetch(res, nil),
2704
+ model&.first]
2690
2705
  end
2691
2706
  end
2692
2707
 
@@ -1245,6 +1245,7 @@ erDiagram
1245
1245
  }
1246
1246
  <% end
1247
1247
  # callback < %= cb_k % > erdClick
1248
+ @_brick_monetized_attributes = model.respond_to?(:monetized_attributes) ? model.monetized_attributes.values : {}
1248
1249
  %>
1249
1250
  </div>
1250
1251
  "
@@ -1612,7 +1613,7 @@ end
1612
1613
  end %>
1613
1614
  </table>
1614
1615
  <%
1615
- if (description = (relation = Brick.relations[tbl_name = #{model_name}.table_name])&.fetch(:description, nil)) %><%=
1616
+ if (description = (relation = Brick.relations[#{model_name}.table_name])&.fetch(:description, nil)) %><%=
1616
1617
  description %><br><%
1617
1618
  end
1618
1619
  %><%= link_to \"(See all #\{model_name.pluralize})\", see_all_path %>
@@ -1686,22 +1687,25 @@ end
1686
1687
  elsif val
1687
1688
  \"<span class=\\\"orphan\\\">Orphaned ID: #\{val}</span>\".html_safe
1688
1689
  end %>
1689
- <% else
1690
- col_type = if ::Brick.config.json_columns[tbl_name]&.include?(k)
1691
- :json
1692
- elsif col&.sql_type == 'geography'
1693
- col.sql_type
1694
- else
1695
- col&.type
1696
- end
1690
+ <% elsif @_brick_monetized_attributes&.include?(k)
1691
+ %><%= f.text_field(k.to_sym, html_options.merge({ value: Money.new(val.to_i).format })) %><%
1692
+ else
1693
+ col_type = if model.json_column?(col)
1694
+ :json
1695
+ elsif col&.sql_type == 'geography'
1696
+ col.sql_type
1697
+ else
1698
+ col&.type
1699
+ end
1697
1700
  case (col_type ||= col&.sql_type)
1698
1701
  when :string, :text
1699
1702
  if is_bcrypt?(val) # || .readonly?
1700
1703
  is_revert = false %>
1701
1704
  <%= hide_bcrypt(val, nil, 1000) %>
1702
1705
  <% elsif col_type == :string
1703
- if model.respond_to?(:enumerized_attributes) && (opts = model.enumerized_attributes[k]&.options).present? %>
1704
- <%= f.select(k.to_sym, [[\"(No #\{k} chosen)\", '^^^brick_NULL^^^']] + opts, { value: val || '^^^brick_NULL^^^' }, html_options) %><%
1706
+ if model.respond_to?(:enumerized_attributes) && (attr = model.enumerized_attributes[k])&.options.present?
1707
+ enum_html_options = attr.kind_of?(Enumerize::Multiple) ? html_options.merge({ multiple: true, size: (opts = attr.options)&.length + 1 }) : html_options %>
1708
+ <%= f.select(k.to_sym, [[\"(No #\{k} chosen)\", '^^^brick_NULL^^^']] + opts, { value: val || '^^^brick_NULL^^^' }, enum_html_options) %><%
1705
1709
  else %>
1706
1710
  <%= f.text_field(k.to_sym, html_options) %><%
1707
1711
  end
@@ -20,40 +20,50 @@ module Brick::Rails::FormTags
20
20
  s << col_name
21
21
  cols[col_name] = col
22
22
  end
23
+ composite_bts = bts.select { |k, _v| k.is_a?(Array) }
24
+ composite_bt_names = {}
25
+ composite_bt_cols = composite_bts.each_with_object([]) do |bt, s|
26
+ composite_bt_names[bt.first.join('__')] = bt.last
27
+ bt.first.each { |bt_col| s << bt_col unless s.include?(bt_col.first) }
28
+ end
23
29
  unless sequence # If no sequence is defined, start with all inclusions
24
30
  cust_cols = klass._br_cust_cols
25
31
  # HOT columns, kept as symbols
26
32
  hots = klass._br_bt_descrip.keys.select { |k| bts.key?(k) }
27
- sequence = col_keys + cust_cols.keys + hots + hms_keys.reject { |assoc_name| inclusions&.exclude?(assoc_name) }
33
+ sequence = (col_keys - composite_bt_cols) +
34
+ composite_bt_names.keys + cust_cols.keys + hots +
35
+ hms_keys.reject { |assoc_name| inclusions&.exclude?(assoc_name) }
28
36
  end
29
37
  sequence.reject! { |nm| exclusions.include?(nm) } if exclusions
30
38
  out << sequence.each_with_object(+'') do |col_name, s|
31
- if (col = cols[col_name]).is_a?(ActiveRecord::ConnectionAdapters::Column)
32
- s << '<th'
33
- s << " title=\"#{col.comment}\"" if col.respond_to?(:comment) && !col.comment.blank?
34
- s << if (bt = bts[col_name])
35
- # Allow sorting for any BT except polymorphics
36
- "#{' x-order="' + bt.first.to_s + '"' unless bt[2]}>BT " +
39
+ if (col = cols[col_name]).is_a?(ActiveRecord::ConnectionAdapters::Column)
40
+ s << '<th '
41
+ s << "title=\"#{col.comment}\"" if col.respond_to?(:comment) && !col.comment.blank?
42
+ s << if (bt = bts[col_name])
43
+ # Allow sorting for any BT except polymorphics
44
+ "x-order=\"#{bt.first.to_s + '"' unless bt[2]}>BT " +
45
+ bt[1].map { |bt_pair| bt_pair.first.bt_link(bt.first) }.join(' ')
46
+ else # Normal column
47
+ "x-order=\"#{col_name + '"' if true}>#{col_name}"
48
+ end
49
+ elsif col # HM column
50
+ options = {}
51
+ options[col[1].inheritance_column] = col[1].name unless col[1] == col[1].base_class
52
+ s << "<th x-order=\"#{col_name + '"' if true}>#{col[2]} "
53
+ s << (col.first ? "#{col[3]}" : "#{link_to(col[3], send("#{col[1]._brick_index}_path", options))}")
54
+ elsif cust_cols.key?(col_name) # Custom column
55
+ s << "<th x-order=\"#{col_name}\">#{col_name}"
56
+ elsif col_name.is_a?(Symbol) && (hot = bts[col_name]) # has_one :through
57
+ s << "<th x-order=\"#{hot.first.to_s}\">HOT " +
58
+ hot[1].map { |hot_pair| hot_pair.first.bt_link(col_name) }.join(' ')
59
+ elsif (bt = composite_bt_names[col_name])
60
+ s << "<th x-order=\"#{bt.first.to_s + '"' unless bt[2]}>BT comp " +
37
61
  bt[1].map { |bt_pair| bt_pair.first.bt_link(bt.first) }.join(' ')
38
- else # Normal column
39
- "#{' x-order="' + col_name + '"' if true}>#{col_name}"
40
- end
41
- elsif col # HM column
42
- options = {}
43
- options[col[1].inheritance_column] = col[1].name unless col[1] == col[1].base_class
44
- s << "<th#{' x-order="' + col_name + '"' if true}>#{col[2]} "
45
- s << (col.first ? "#{col[3]}" : "#{link_to(col[3], send("#{col[1]._brick_index}_path", options))}")
46
- elsif cust_cols.key?(col_name) # Custom column
47
- s << "<th x-order=\"#{col_name}\">#{col_name}"
48
- elsif col_name.is_a?(Symbol) && (hot = bts[col_name]) # has_one :through
49
- s << "<th x-order=\"#{hot.first.to_s}\">HOT " +
50
- hot[1].map { |hot_pair| hot_pair.first.bt_link(col_name) }.join(' ')
51
- hot[1].first
52
- else # Bad column name!
53
- s << "<th title=\"<< Unknown column >>\">#{col_name}"
62
+ else # Bad column name!
63
+ s << "<th title=\"<< Unknown column >>\">#{col_name}"
64
+ end
65
+ s << '</th>'
54
66
  end
55
- s << '</th>'
56
- end
57
67
  out << "</tr></thead>
58
68
  <tbody>"
59
69
  # %%% Have once gotten this error with MSSQL referring to http://localhost:3000/warehouse/cold_room_temperatures__archive
@@ -70,7 +80,7 @@ module Brick::Rails::FormTags
70
80
  out << ' class=\"dimmed\"' unless cols.key?(col_name) || (cust_col = cust_cols[col_name]) ||
71
81
  (col_name.is_a?(Symbol) && bts.key?(col_name)) # HOT
72
82
  out << '>'
73
- if (bt = bts[col_name])
83
+ if (bt = bts[col_name] || composite_bt_names[col_name])
74
84
  if bt[2] # Polymorphic?
75
85
  if (poly_id = obj.send("#{bt.first}_id"))
76
86
  # Was: obj.send("#{bt.first}_type")
@@ -119,8 +129,12 @@ module Brick::Rails::FormTags
119
129
  end
120
130
  elsif (col = cols[col_name]).is_a?(ActiveRecord::ConnectionAdapters::Column)
121
131
  # binding.pry if col.is_a?(Array)
122
- col_type = col&.sql_type == 'geography' ? col.sql_type : col&.type
123
- out << display_value(col_type || col&.sql_type, val).to_s
132
+ out << if @_brick_monetized_attributes&.include?(col_name)
133
+ val ? Money.new(val.to_i).format : ''
134
+ else
135
+ col_type = col&.sql_type == 'geography' ? col.sql_type : col&.type
136
+ display_value(col_type || col&.sql_type, val).to_s
137
+ end
124
138
  elsif cust_col
125
139
  data = cust_col.first.map { |cc_part| obj.send(cc_part.last) }
126
140
  cust_txt = klass.brick_descrip(cust_col[-2], data)
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 124
8
+ TINY = 125
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
data/lib/brick.rb CHANGED
@@ -218,7 +218,8 @@ module Brick
218
218
  puts " belongs_to :#{a.name}, polymorphic: true"
219
219
  end
220
220
  else
221
- s.first[a.foreign_key.to_s] = [a.name, a.klass]
221
+ bt_key = a.foreign_key.is_a?(Array) ? a.foreign_key : a.foreign_key.to_s
222
+ s.first[bt_key] = [a.name, a.klass]
222
223
  end
223
224
  else # This gets all forms of has_many and has_one
224
225
  if through # has_many :through or has_one :through
@@ -525,7 +526,7 @@ module Brick
525
526
  v.each do |type|
526
527
  # Allow polymorphic BT to relate to an STI subclass
527
528
  base_type = ::Brick.config.sti_namespace_prefixes["::#{type}"] ||
528
- ::Brick.config.sti_namespace_prefixes.find { |k, _v| type.start_with?(k[2..-1]) }&.last&.[](2..-1)
529
+ ::Brick.config.sti_namespace_prefixes.find { |k, _v| k.end_with?('::') && type.start_with?(k[2..-1]) }&.last&.[](2..-1)
529
530
  if relations.key?(primary_table = (base_type || type).underscore.pluralize)
530
531
  ::Brick._add_bt_and_hm([nil, table_name, poly, nil, primary_table, "(brick) #{table_name}_#{poly}"], relations,
531
532
  type, # Polymorphic class
@@ -605,7 +606,8 @@ In config/initializers/brick.rb appropriate entries would look something like:
605
606
  ::Rails.configuration.eager_load_namespaces.select { |ns| ns < ::Rails::Application }.each(&:eager_load!)
606
607
  end
607
608
  else
608
- Zeitwerk::Loader.eager_load_all
609
+ # Same as: Zeitwerk::Loader.eager_load_all -- plus retry when something skips a beat
610
+ Zeitwerk::Registry.loaders.each { |loader| load_with_retry(loader) }
609
611
  end
610
612
  abstract_ar_bases = if do_ar_abstract_bases
611
613
  ActiveRecord::Base.descendants.select { |ar| ar.abstract_class? }.map(&:name)
@@ -614,6 +616,20 @@ In config/initializers/brick.rb appropriate entries would look something like:
614
616
  abstract_ar_bases
615
617
  end
616
618
 
619
+ # Some classes (like Phlex::Testing::Rails) will successfully auto-load after a retry
620
+ def load_with_retry(loader, autoloaded = nil)
621
+ autoloaded ||= loader.send(:autoloaded_dirs).dup
622
+ begin
623
+ loader.eager_load
624
+ rescue Zeitwerk::SetupRequired
625
+ # This is fine -- we eager load what can be eager loaded
626
+ rescue Zeitwerk::NameError
627
+ if autoloaded != (new_auto = loader.send(:autoloaded_dirs))
628
+ load_with_retry(loader, new_auto.dup) # Try one more time and it could come together
629
+ end
630
+ end
631
+ end
632
+
617
633
  def display_classes(prefix, rels, max_length)
618
634
  rels.sort.each do |rel|
619
635
  ::Brick.auto_models << rel.first
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.124
4
+ version: 1.0.125
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorin Thwaits
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-26 00:00:00.000000000 Z
11
+ date: 2023-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord