brick 1.0.208 → 1.0.209

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b119de0df1fa94e7c3a07315295c2d5fcf2871ec01e44986db6ddee784b82cf3
4
- data.tar.gz: ba567e471502273780baeb78ed456e3b81319ce63560ccd7eaaf7ec15cb0ea21
3
+ metadata.gz: 9727d5ff3dbf5edcb8ce91b03d0570eec5eb2e0f9ae2c4f456d9d50779321fc9
4
+ data.tar.gz: 32b32f909110d6eca464c775d9725ad049fabf8591daab1088da007ae9a95c5a
5
5
  SHA512:
6
- metadata.gz: 6f0e173346e205727f94e1e33d182f2a783cc20d3496a8acb7592da9c931a1c4a9e6f32da540d78647f75b00b504df03845e17816cfd589a6dc69d73a81f56b5
7
- data.tar.gz: 02b36babcf6958b35cf38ad8caf2147fffaf5a438f2674a541f46f0b9813ec46df05a5fe1fafcbaba96ad63a654db429d4dc245d1a1cb688b1e20070b197a374
6
+ metadata.gz: 1931290e472f472d93e1536e6517a3865bcc1acd23d15156d48e52c7f35987183b274c8a7c2ac00f09f2f6ac9a4d5663071c84ae4c896de6b4c0069d4a06b1da
7
+ data.tar.gz: 5064ef883fb66feb187fe80a92b3ec700da04feef0f390d720b51497f086bbc1062e505cd467d3624fadb6102bc8dec49b0b6b16a1c04a1a1ceb34e50f4f9ff5
@@ -542,25 +542,27 @@ module ActiveRecord
542
542
 
543
543
  # Links from ActiveRecord association pathing names over to the real table
544
544
  # correlation names that get chosen when the AREL AST tree is walked.
545
- def brick_links
545
+ def brick_links(do_dup = true)
546
546
  # Touching AREL AST walks the JoinDependency tree, and in that process uses our
547
547
  # "brick_links" patch to find how every AR chain of association names relates to exact
548
- # table correlation names chosen by AREL. We use a duplicate relation object for this
549
- # because an important side-effect of referencing the AST is that the @arel instance
550
- # variable gets set, and this is a signal to ActiveRecord that a relation has now
551
- # become immutable. (We aren't quite ready for our "real deal" relation object to be
552
- # set in stone ... still need to add .select(), and possibly .where() and .order()
553
- # things ... also if there are any HM counts then an OUTER JOIN for each of them out
554
- # to a derived table to do that counting. All of these things need to know proper
555
- # table correlation names, which will now become available from brick_links on the
556
- # rel_dupe object.)
548
+ # table correlation names chosen by AREL. Unless a relation has already had its AST
549
+ # tree built out, we will use a duplicate relation object for this, because an important
550
+ # side-effect of referencing the AST is that the @arel instance variable gets set. This
551
+ # is a signal to ActiveRecord that a relation has now become immutable. (When Brick is
552
+ # still in the middle of calculating its query, we aren't quite ready for the relation
553
+ # object to be set in stone ... still need to add .select(), and possibly .where() and
554
+ # .order() things ... also if there are any HM counts then an OUTER JOIN for each of
555
+ # them out to a derived table to do that counting. All of these things need to know
556
+ # proper table correlation names, which will now become available from brick_links on
557
+ # the rel_dupe object.)
557
558
  @_brick_links ||= begin
558
559
  # If it's a CollectionProxy (which inherits from Relation) then need to dig
559
560
  # out the core Relation object which is found in the association scope.
560
- rel_dupe = (is_a?(ActiveRecord::Associations::CollectionProxy) ? scope : self).dup
561
+ brick_rel = is_a?(ActiveRecord::Associations::CollectionProxy) ? scope : self
562
+ brick_rel = brick_rel.dup if do_dup
561
563
  # Start out with a hash that has only the root table name
562
- rel_dupe.instance_variable_set(:@_brick_links, bl = { '' => table_name })
563
- rel_dupe.arel.ast # Walk the AST tree in order to capture all the other correlation names
564
+ brick_rel.instance_variable_set(:@_brick_links, bl = { '' => table_name })
565
+ brick_rel.arel.ast if do_dup # Walk the AST tree in order to capture all the other correlation names
564
566
  bl
565
567
  end
566
568
  end
@@ -57,7 +57,7 @@ module Brick::Rails::FormBuilder
57
57
  out << ::Brick::Rails.hide_bcrypt(val, nil, 1000)
58
58
  elsif col_type == :string
59
59
  if model.respond_to?(:uploaders) && model.uploaders.key?(col.name&.to_sym) &&
60
- (url = self.object.send(col.name)&.url) # Carrierwave image?
60
+ (url = self.object.send(col.name)&.url) # Carrierwave image?
61
61
  out << "<img src=\"#{url}\" title=\"#{val}\">"
62
62
  elsif model.respond_to?(:enumerized_attributes) && (opts = (attr = model.enumerized_attributes[method])&.options).present?
63
63
  enum_html_options = attr.kind_of?(Enumerize::Multiple) ? html_options.merge({ multiple: true, size: opts.length + 1 }) : html_options
@@ -232,15 +232,15 @@ module Brick::Rails::FormTags
232
232
  out << if klass._brick_monetized_attributes&.include?(col_name)
233
233
  val ? Money.new(val.to_i).format : ''
234
234
  elsif klass.respond_to?(:uploaders) && klass.uploaders.key?(col_name.to_sym) &&
235
- (url = obj.send(col.name)&.url) && # Carrierwave image?
236
- # And either not restricting Carrierwave, or under the defined Carrierwave image limit?
237
- (!(limit_carrierwave = ::Brick.config.limit_carrierwave) ||
238
- (limit_carrierwave.is_a?(Numeric) &&
239
- (carrierwave_count = instance_variable_get(:@_carrierwave_count) || 0) &&
240
- ((carrierwave_count += 1) < limit_carrierwave) &&
241
- instance_variable_set(:@_carrierwave_count, carrierwave_count)
242
- )
243
- )
235
+ (url = obj.send(col.name)&.url) && # Has a Carrierwave URL? ...
236
+ # ... and either not restricting Carrierwave, or under the defined Carrierwave attachment limit?
237
+ (!(limit_carrierwave = ::Brick.config.limit_carrierwave) ||
238
+ (limit_carrierwave.is_a?(Numeric) &&
239
+ (carrierwave_count = instance_variable_get(:@_carrierwave_count) || 0) &&
240
+ ((carrierwave_count += 1) < limit_carrierwave) &&
241
+ instance_variable_set(:@_carrierwave_count, carrierwave_count)
242
+ )
243
+ )
244
244
  "<img class=\"thumbImg\" src=\"#{url}\" title=\"#{val}\">"
245
245
  else
246
246
  lat_lng = if [:float, :decimal].include?(col.type) &&
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 208
8
+ TINY = 209
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
@@ -1512,7 +1512,7 @@ module ActiveRecord
1512
1512
  module QueryMethods
1513
1513
  private
1514
1514
 
1515
- if private_instance_methods.include?(:build_join_query)
1515
+ if private_instance_methods.include?(:build_join_query) # AR 5.0 - 6.0
1516
1516
  alias _brick_build_join_query build_join_query
1517
1517
  def build_join_query(manager, buckets, *args) # , **kwargs)
1518
1518
  # %%% Better way to bring relation into the mix
@@ -1523,7 +1523,7 @@ module ActiveRecord
1523
1523
  _brick_build_join_query(manager, buckets, *args) # , **kwargs)
1524
1524
  end
1525
1525
 
1526
- elsif private_instance_methods.include?(:select_association_list)
1526
+ elsif private_instance_methods.include?(:select_association_list) # AR >= 6.1
1527
1527
  alias _brick_select_association_list select_association_list
1528
1528
  def select_association_list(associations, stashed_joins = nil)
1529
1529
  result = _brick_select_association_list(associations, stashed_joins)
@@ -1531,7 +1531,7 @@ module ActiveRecord
1531
1531
  result
1532
1532
  end
1533
1533
 
1534
- # else # Rails 4.1 ? and older
1534
+ # else # AR 4.2 and older
1535
1535
  # alias _brick_build_joins build_joins
1536
1536
  # def build_joins(manager, joins)
1537
1537
  # result = _brick_build_joins(manager, joins)
@@ -1551,12 +1551,12 @@ module ActiveRecord
1551
1551
  # Capture the table alias name that was chosen
1552
1552
  # if (relation = node.instance_variable_get(:@assocs)&.instance_variable_get(:@relation))
1553
1553
  # link_path = node.instance_variable_get(:@link_path)
1554
- # relation.brick_links[link_path] = result.first.table_alias || result.first.table_name
1554
+ # relation.brick_links(false)[link_path] = result.first.table_alias || result.first.table_name
1555
1555
  # end
1556
1556
  result
1557
1557
  end
1558
1558
  end
1559
- else # For AR >= 4.2
1559
+ else # For AR >= 4.1
1560
1560
  class JoinDependency
1561
1561
  # An intelligent .eager_load() and .includes() that creates t0_r0 style aliases only for the columns
1562
1562
  # used in .select(). To enable this behaviour, include the flag :_brick_eager_load as the first
@@ -1652,7 +1652,7 @@ module ActiveRecord
1652
1652
  # Capture the table alias name that was chosen
1653
1653
  if (relation = node.instance_variable_get(:@assocs)&.instance_variable_get(:@relation))
1654
1654
  link_path = node.instance_variable_get(:@link_path)
1655
- relation.brick_links[link_path] = result.first.table_alias || result.first.table_name
1655
+ relation.brick_links(false)[link_path] = result.first.table_alias || result.first.table_name
1656
1656
  end
1657
1657
  result
1658
1658
  end
@@ -1663,7 +1663,7 @@ module ActiveRecord
1663
1663
  # Capture the table alias name that was chosen
1664
1664
  if (relation = child.instance_variable_get(:@assocs)&.instance_variable_get(:@relation))
1665
1665
  link_path = child.instance_variable_get(:@link_path)
1666
- relation.brick_links[link_path] = if child.table.is_a?(Arel::Nodes::TableAlias)
1666
+ relation.brick_links(false)[link_path] = if child.table.is_a?(Arel::Nodes::TableAlias)
1667
1667
  child.table.right
1668
1668
  else
1669
1669
  # Was: result.first&.left&.table_alias || child.table_name
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.208
4
+ version: 1.0.209
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorin Thwaits
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-17 00:00:00.000000000 Z
11
+ date: 2024-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -285,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
285
285
  - !ruby/object:Gem::Version
286
286
  version: 1.3.6
287
287
  requirements: []
288
- rubygems_version: 3.1.6
288
+ rubygems_version: 3.2.33
289
289
  signing_key:
290
290
  specification_version: 4
291
291
  summary: Create a Rails app from data alone