activesupport 7.0.8 → 7.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +736 -293
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +4 -4
  5. data/lib/active_support/actionable_error.rb +3 -1
  6. data/lib/active_support/array_inquirer.rb +2 -0
  7. data/lib/active_support/backtrace_cleaner.rb +25 -5
  8. data/lib/active_support/benchmarkable.rb +1 -0
  9. data/lib/active_support/builder.rb +1 -1
  10. data/lib/active_support/cache/coder.rb +153 -0
  11. data/lib/active_support/cache/entry.rb +128 -0
  12. data/lib/active_support/cache/file_store.rb +36 -9
  13. data/lib/active_support/cache/mem_cache_store.rb +84 -68
  14. data/lib/active_support/cache/memory_store.rb +76 -24
  15. data/lib/active_support/cache/null_store.rb +6 -0
  16. data/lib/active_support/cache/redis_cache_store.rb +126 -131
  17. data/lib/active_support/cache/serializer_with_fallback.rb +175 -0
  18. data/lib/active_support/cache/strategy/local_cache.rb +20 -8
  19. data/lib/active_support/cache.rb +304 -246
  20. data/lib/active_support/callbacks.rb +38 -18
  21. data/lib/active_support/concern.rb +4 -2
  22. data/lib/active_support/concurrency/load_interlock_aware_monitor.rb +42 -3
  23. data/lib/active_support/concurrency/null_lock.rb +13 -0
  24. data/lib/active_support/configurable.rb +10 -0
  25. data/lib/active_support/core_ext/array/conversions.rb +2 -1
  26. data/lib/active_support/core_ext/array.rb +0 -1
  27. data/lib/active_support/core_ext/class/subclasses.rb +13 -10
  28. data/lib/active_support/core_ext/date/conversions.rb +1 -0
  29. data/lib/active_support/core_ext/date.rb +0 -1
  30. data/lib/active_support/core_ext/date_and_time/calculations.rb +10 -0
  31. data/lib/active_support/core_ext/date_time/conversions.rb +6 -2
  32. data/lib/active_support/core_ext/date_time.rb +0 -1
  33. data/lib/active_support/core_ext/digest/uuid.rb +1 -10
  34. data/lib/active_support/core_ext/enumerable.rb +3 -75
  35. data/lib/active_support/core_ext/erb/util.rb +196 -0
  36. data/lib/active_support/core_ext/hash/conversions.rb +1 -1
  37. data/lib/active_support/core_ext/module/attribute_accessors.rb +6 -0
  38. data/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb +34 -16
  39. data/lib/active_support/core_ext/module/delegation.rb +40 -11
  40. data/lib/active_support/core_ext/module/deprecation.rb +15 -12
  41. data/lib/active_support/core_ext/module/introspection.rb +0 -1
  42. data/lib/active_support/core_ext/numeric/bytes.rb +9 -0
  43. data/lib/active_support/core_ext/numeric/conversions.rb +2 -0
  44. data/lib/active_support/core_ext/numeric.rb +0 -1
  45. data/lib/active_support/core_ext/object/deep_dup.rb +16 -0
  46. data/lib/active_support/core_ext/object/inclusion.rb +13 -5
  47. data/lib/active_support/core_ext/object/instance_variables.rb +22 -12
  48. data/lib/active_support/core_ext/object/json.rb +10 -2
  49. data/lib/active_support/core_ext/object/with.rb +44 -0
  50. data/lib/active_support/core_ext/object/with_options.rb +3 -3
  51. data/lib/active_support/core_ext/object.rb +1 -0
  52. data/lib/active_support/core_ext/pathname/blank.rb +16 -0
  53. data/lib/active_support/core_ext/pathname/existence.rb +2 -0
  54. data/lib/active_support/core_ext/pathname.rb +1 -0
  55. data/lib/active_support/core_ext/range/conversions.rb +28 -7
  56. data/lib/active_support/core_ext/range/{overlaps.rb → overlap.rb} +5 -3
  57. data/lib/active_support/core_ext/range.rb +1 -2
  58. data/lib/active_support/core_ext/securerandom.rb +24 -12
  59. data/lib/active_support/core_ext/string/filters.rb +20 -14
  60. data/lib/active_support/core_ext/string/inflections.rb +16 -5
  61. data/lib/active_support/core_ext/string/output_safety.rb +38 -174
  62. data/lib/active_support/core_ext/thread/backtrace/location.rb +12 -0
  63. data/lib/active_support/core_ext/time/calculations.rb +18 -2
  64. data/lib/active_support/core_ext/time/conversions.rb +2 -2
  65. data/lib/active_support/core_ext/time/zones.rb +4 -4
  66. data/lib/active_support/core_ext/time.rb +0 -1
  67. data/lib/active_support/current_attributes.rb +15 -6
  68. data/lib/active_support/dependencies/autoload.rb +17 -12
  69. data/lib/active_support/deprecation/behaviors.rb +53 -32
  70. data/lib/active_support/deprecation/constant_accessor.rb +5 -4
  71. data/lib/active_support/deprecation/deprecators.rb +104 -0
  72. data/lib/active_support/deprecation/disallowed.rb +3 -5
  73. data/lib/active_support/deprecation/instance_delegator.rb +31 -4
  74. data/lib/active_support/deprecation/method_wrappers.rb +6 -23
  75. data/lib/active_support/deprecation/proxy_wrappers.rb +37 -22
  76. data/lib/active_support/deprecation/reporting.rb +35 -21
  77. data/lib/active_support/deprecation.rb +32 -5
  78. data/lib/active_support/deprecator.rb +7 -0
  79. data/lib/active_support/descendants_tracker.rb +104 -132
  80. data/lib/active_support/duration/iso8601_serializer.rb +0 -2
  81. data/lib/active_support/duration.rb +2 -1
  82. data/lib/active_support/encrypted_configuration.rb +30 -9
  83. data/lib/active_support/encrypted_file.rb +8 -3
  84. data/lib/active_support/environment_inquirer.rb +22 -2
  85. data/lib/active_support/error_reporter/test_helper.rb +15 -0
  86. data/lib/active_support/error_reporter.rb +121 -35
  87. data/lib/active_support/execution_wrapper.rb +4 -4
  88. data/lib/active_support/file_update_checker.rb +4 -2
  89. data/lib/active_support/fork_tracker.rb +10 -2
  90. data/lib/active_support/gem_version.rb +4 -4
  91. data/lib/active_support/gzip.rb +2 -0
  92. data/lib/active_support/hash_with_indifferent_access.rb +35 -17
  93. data/lib/active_support/i18n.rb +1 -1
  94. data/lib/active_support/i18n_railtie.rb +20 -13
  95. data/lib/active_support/inflector/inflections.rb +2 -0
  96. data/lib/active_support/inflector/methods.rb +22 -10
  97. data/lib/active_support/inflector/transliterate.rb +3 -1
  98. data/lib/active_support/isolated_execution_state.rb +26 -22
  99. data/lib/active_support/json/decoding.rb +2 -1
  100. data/lib/active_support/json/encoding.rb +25 -43
  101. data/lib/active_support/key_generator.rb +9 -1
  102. data/lib/active_support/lazy_load_hooks.rb +6 -4
  103. data/lib/active_support/locale/en.yml +2 -0
  104. data/lib/active_support/log_subscriber.rb +78 -33
  105. data/lib/active_support/logger.rb +1 -1
  106. data/lib/active_support/logger_thread_safe_level.rb +9 -21
  107. data/lib/active_support/message_encryptor.rb +197 -53
  108. data/lib/active_support/message_encryptors.rb +140 -0
  109. data/lib/active_support/message_pack/cache_serializer.rb +23 -0
  110. data/lib/active_support/message_pack/extensions.rb +292 -0
  111. data/lib/active_support/message_pack/serializer.rb +63 -0
  112. data/lib/active_support/message_pack.rb +50 -0
  113. data/lib/active_support/message_verifier.rb +212 -93
  114. data/lib/active_support/message_verifiers.rb +134 -0
  115. data/lib/active_support/messages/codec.rb +65 -0
  116. data/lib/active_support/messages/metadata.rb +111 -45
  117. data/lib/active_support/messages/rotation_coordinator.rb +93 -0
  118. data/lib/active_support/messages/rotator.rb +34 -32
  119. data/lib/active_support/messages/serializer_with_fallback.rb +158 -0
  120. data/lib/active_support/multibyte/chars.rb +2 -0
  121. data/lib/active_support/multibyte/unicode.rb +9 -37
  122. data/lib/active_support/notifications/fanout.rb +239 -81
  123. data/lib/active_support/notifications/instrumenter.rb +71 -14
  124. data/lib/active_support/notifications.rb +1 -1
  125. data/lib/active_support/number_helper/number_converter.rb +2 -2
  126. data/lib/active_support/number_helper/number_to_human_size_converter.rb +1 -1
  127. data/lib/active_support/number_helper/number_to_phone_converter.rb +1 -0
  128. data/lib/active_support/ordered_hash.rb +3 -3
  129. data/lib/active_support/ordered_options.rb +14 -0
  130. data/lib/active_support/parameter_filter.rb +84 -69
  131. data/lib/active_support/proxy_object.rb +2 -0
  132. data/lib/active_support/railtie.rb +33 -21
  133. data/lib/active_support/reloader.rb +12 -4
  134. data/lib/active_support/rescuable.rb +2 -0
  135. data/lib/active_support/secure_compare_rotator.rb +16 -9
  136. data/lib/active_support/string_inquirer.rb +3 -1
  137. data/lib/active_support/subscriber.rb +9 -27
  138. data/lib/active_support/syntax_error_proxy.rb +49 -0
  139. data/lib/active_support/tagged_logging.rb +60 -24
  140. data/lib/active_support/test_case.rb +153 -6
  141. data/lib/active_support/testing/assertions.rb +25 -9
  142. data/lib/active_support/testing/autorun.rb +0 -2
  143. data/lib/active_support/testing/constant_stubbing.rb +32 -0
  144. data/lib/active_support/testing/deprecation.rb +25 -25
  145. data/lib/active_support/testing/error_reporter_assertions.rb +108 -0
  146. data/lib/active_support/testing/isolation.rb +1 -1
  147. data/lib/active_support/testing/method_call_assertions.rb +21 -8
  148. data/lib/active_support/testing/parallelize_executor.rb +8 -3
  149. data/lib/active_support/testing/stream.rb +1 -1
  150. data/lib/active_support/testing/strict_warnings.rb +38 -0
  151. data/lib/active_support/testing/time_helpers.rb +32 -14
  152. data/lib/active_support/time_with_zone.rb +4 -14
  153. data/lib/active_support/values/time_zone.rb +9 -7
  154. data/lib/active_support/version.rb +1 -1
  155. data/lib/active_support/xml_mini/jdom.rb +3 -10
  156. data/lib/active_support/xml_mini/nokogiri.rb +1 -1
  157. data/lib/active_support/xml_mini/nokogirisax.rb +1 -1
  158. data/lib/active_support/xml_mini/rexml.rb +1 -1
  159. data/lib/active_support/xml_mini.rb +2 -2
  160. data/lib/active_support.rb +13 -3
  161. metadata +102 -17
  162. data/lib/active_support/core_ext/array/deprecated_conversions.rb +0 -25
  163. data/lib/active_support/core_ext/date/deprecated_conversions.rb +0 -40
  164. data/lib/active_support/core_ext/date_time/deprecated_conversions.rb +0 -36
  165. data/lib/active_support/core_ext/numeric/deprecated_conversions.rb +0 -60
  166. data/lib/active_support/core_ext/range/deprecated_conversions.rb +0 -36
  167. data/lib/active_support/core_ext/range/include_time_with_zone.rb +0 -5
  168. data/lib/active_support/core_ext/time/deprecated_conversions.rb +0 -73
  169. data/lib/active_support/core_ext/uri.rb +0 -5
  170. data/lib/active_support/per_thread_registry.rb +0 -65
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Array
4
- NOT_SET = Object.new # :nodoc:
5
- def to_s(format = NOT_SET) # :nodoc:
6
- case format
7
- when :db
8
- ActiveSupport::Deprecation.warn(
9
- "Array#to_s(#{format.inspect}) is deprecated. Please use Array#to_fs(#{format.inspect}) instead."
10
- )
11
- if empty?
12
- "null"
13
- else
14
- collect(&:id).join(",")
15
- end
16
- when NOT_SET
17
- to_default_s
18
- else
19
- ActiveSupport::Deprecation.warn(
20
- "Array#to_s(#{format.inspect}) is deprecated. Please use Array#to_fs(#{format.inspect}) instead."
21
- )
22
- to_default_s
23
- end
24
- end
25
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "date"
4
-
5
- class Date
6
- NOT_SET = Object.new # :nodoc:
7
- def to_s(format = NOT_SET) # :nodoc:
8
- if formatter = DATE_FORMATS[format]
9
- ActiveSupport::Deprecation.warn(
10
- "Date#to_s(#{format.inspect}) is deprecated. Please use Date#to_fs(#{format.inspect}) instead."
11
- )
12
- if formatter.respond_to?(:call)
13
- formatter.call(self).to_s
14
- else
15
- strftime(formatter)
16
- end
17
- elsif format == NOT_SET
18
- if formatter = DATE_FORMATS[:default]
19
- ActiveSupport::Deprecation.warn(<<-MSG.squish)
20
- Using a :default format for Date#to_s is deprecated. Please use Date#to_fs instead. If you fixed all places
21
- inside your application that you see this deprecation, you can set
22
- `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
23
- the `Bundler.require` call to fix all the callers outside of your application.
24
- MSG
25
- if formatter.respond_to?(:call)
26
- formatter.call(self).to_s
27
- else
28
- strftime(formatter)
29
- end
30
- else
31
- to_default_s
32
- end
33
- else
34
- ActiveSupport::Deprecation.warn(
35
- "Date#to_s(#{format.inspect}) is deprecated. Please use Date#to_fs(#{format.inspect}) instead."
36
- )
37
- to_default_s
38
- end
39
- end
40
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "date"
4
-
5
- class DateTime
6
- NOT_SET = Object.new # :nodoc:
7
- def to_s(format = NOT_SET) # :nodoc:
8
- if formatter = ::Time::DATE_FORMATS[format]
9
- ActiveSupport::Deprecation.warn(
10
- "DateTime#to_s(#{format.inspect}) is deprecated. Please use DateTime#to_fs(#{format.inspect}) instead."
11
- )
12
- formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
13
- elsif format == NOT_SET
14
- if formatter = ::Time::DATE_FORMATS[:default]
15
- ActiveSupport::Deprecation.warn(<<-MSG.squish)
16
- Using a :default format for DateTime#to_s is deprecated. Please use DateTime#to_fs instead. If you fixed all
17
- places inside your application that you see this deprecation, you can set
18
- `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
19
- the `Bundler.require` call to fix all the callers outside of your application.
20
- MSG
21
- if formatter.respond_to?(:call)
22
- formatter.call(self).to_s
23
- else
24
- strftime(formatter)
25
- end
26
- else
27
- to_default_s
28
- end
29
- else
30
- ActiveSupport::Deprecation.warn(
31
- "DateTime#to_s(#{format.inspect}) is deprecated. Please use DateTime#to_fs(#{format.inspect}) instead."
32
- )
33
- to_default_s
34
- end
35
- end
36
- end
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveSupport
4
- module DeprecatedNumericWithFormat # :nodoc:
5
- def to_s(format = nil, options = nil)
6
- return super() if format.nil?
7
-
8
- case format
9
- when Integer, String
10
- super(format)
11
- when :phone
12
- ActiveSupport::Deprecation.warn(
13
- "#{self.class}#to_s(#{format.inspect}) is deprecated. Please use #{self.class}#to_fs(#{format.inspect}) instead."
14
- )
15
- ActiveSupport::NumberHelper.number_to_phone(self, options || {})
16
- when :currency
17
- ActiveSupport::Deprecation.warn(
18
- "#{self.class}#to_s(#{format.inspect}) is deprecated. Please use #{self.class}#to_fs(#{format.inspect}) instead."
19
- )
20
- ActiveSupport::NumberHelper.number_to_currency(self, options || {})
21
- when :percentage
22
- ActiveSupport::Deprecation.warn(
23
- "#{self.class}#to_s(#{format.inspect}) is deprecated. Please use #{self.class}#to_fs(#{format.inspect}) instead."
24
- )
25
- ActiveSupport::NumberHelper.number_to_percentage(self, options || {})
26
- when :delimited
27
- ActiveSupport::Deprecation.warn(
28
- "#{self.class}#to_s(#{format.inspect}) is deprecated. Please use #{self.class}#to_fs(#{format.inspect}) instead."
29
- )
30
- ActiveSupport::NumberHelper.number_to_delimited(self, options || {})
31
- when :rounded
32
- ActiveSupport::Deprecation.warn(
33
- "#{self.class}#to_s(#{format.inspect}) is deprecated. Please use #{self.class}#to_fs(#{format.inspect}) instead."
34
- )
35
- ActiveSupport::NumberHelper.number_to_rounded(self, options || {})
36
- when :human
37
- ActiveSupport::Deprecation.warn(
38
- "#{self.class}#to_s(#{format.inspect}) is deprecated. Please use #{self.class}#to_fs(#{format.inspect}) instead."
39
- )
40
- ActiveSupport::NumberHelper.number_to_human(self, options || {})
41
- when :human_size
42
- ActiveSupport::Deprecation.warn(
43
- "#{self.class}#to_s(#{format.inspect}) is deprecated. Please use #{self.class}#to_fs(#{format.inspect}) instead."
44
- )
45
- ActiveSupport::NumberHelper.number_to_human_size(self, options || {})
46
- when Symbol
47
- ActiveSupport::Deprecation.warn(
48
- "#{self.class}#to_s(#{format.inspect}) is deprecated. Please use #{self.class}#to_fs(#{format.inspect}) instead."
49
- )
50
- super()
51
- else
52
- super(format)
53
- end
54
- end
55
- end
56
- end
57
-
58
- Integer.prepend ActiveSupport::DeprecatedNumericWithFormat
59
- Float.prepend ActiveSupport::DeprecatedNumericWithFormat
60
- BigDecimal.prepend ActiveSupport::DeprecatedNumericWithFormat
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveSupport
4
- module DeprecatedRangeWithFormat # :nodoc:
5
- NOT_SET = Object.new # :nodoc:
6
- def to_s(format = NOT_SET)
7
- if formatter = RangeWithFormat::RANGE_FORMATS[format]
8
- ActiveSupport::Deprecation.warn(
9
- "Range#to_s(#{format.inspect}) is deprecated. Please use Range#to_fs(#{format.inspect}) instead."
10
- )
11
- formatter.call(first, last)
12
- elsif format == NOT_SET
13
- if formatter = RangeWithFormat::RANGE_FORMATS[:default]
14
- ActiveSupport::Deprecation.warn(<<-MSG.squish)
15
- Using a :default format for Range#to_s is deprecated. Please use Range#to_fs instead. If you fixed all
16
- places inside your application that you see this deprecation, you can set
17
- `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
18
- the `Bundler.require` call to fix all the callers outside of your application.
19
- MSG
20
- formatter.call(first, last)
21
- else
22
- super()
23
- end
24
- else
25
- ActiveSupport::Deprecation.warn(
26
- "Range#to_s(#{format.inspect}) is deprecated. Please use Range#to_fs(#{format.inspect}) instead."
27
- )
28
- super()
29
- end
30
- end
31
- alias_method :to_default_s, :to_s
32
- deprecate :to_default_s
33
- end
34
- end
35
-
36
- Range.prepend(ActiveSupport::DeprecatedRangeWithFormat)
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ActiveSupport::Deprecation.warn(<<-MSG.squish)
4
- `active_support/core_ext/range/include_time_with_zone` is deprecated and will be removed in Rails 7.1.
5
- MSG
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "time"
4
-
5
- class Time
6
- NOT_SET = Object.new # :nodoc:
7
- def to_s(format = NOT_SET) # :nodoc:
8
- if formatter = DATE_FORMATS[format]
9
- ActiveSupport::Deprecation.warn(
10
- "Time#to_s(#{format.inspect}) is deprecated. Please use Time#to_fs(#{format.inspect}) instead."
11
- )
12
- formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
13
- elsif format == NOT_SET
14
- if formatter = ::Time::DATE_FORMATS[:default]
15
- ActiveSupport::Deprecation.warn(<<-MSG.squish)
16
- Using a :default format for Time#to_s is deprecated. Please use Time#to_fs instead. If you fixed all places
17
- inside your application that you see this deprecation, you can set
18
- `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
19
- the `Bundler.require` call to fix all the callers outside of your application.
20
- MSG
21
- if formatter.respond_to?(:call)
22
- formatter.call(self).to_s
23
- else
24
- strftime(formatter)
25
- end
26
- else
27
- to_default_s
28
- end
29
- else
30
- ActiveSupport::Deprecation.warn(
31
- "Time#to_s(#{format.inspect}) is deprecated. Please use Time#to_fs(#{format.inspect}) instead."
32
- )
33
- to_default_s
34
- end
35
- end
36
- end
37
-
38
- module ActiveSupport
39
- class TimeWithZone
40
- NOT_SET = Object.new # :nodoc:
41
-
42
- def to_s(format = NOT_SET) # :nodoc:
43
- if format == :db
44
- ActiveSupport::Deprecation.warn(
45
- "TimeWithZone#to_s(:db) is deprecated. Please use TimeWithZone#to_fs(:db) instead."
46
- )
47
- utc.to_fs(format)
48
- elsif formatter = ::Time::DATE_FORMATS[format]
49
- ActiveSupport::Deprecation.warn(
50
- "TimeWithZone#to_s(#{format.inspect}) is deprecated. Please use TimeWithZone#to_fs(#{format.inspect}) instead."
51
- )
52
- formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
53
- elsif format == NOT_SET
54
- if formatter = ::Time::DATE_FORMATS[:default]
55
- ActiveSupport::Deprecation.warn(<<-MSG.squish)
56
- Using a :default format for TimeWithZone#to_s is deprecated. Please use TimeWithZone#to_fs instead.
57
- If you fixed all places inside your application that you see this deprecation, you can set
58
- `ENV['RAILS_DISABLE_DEPRECATED_TO_S_CONVERSION']` to `"true"` in the `config/application.rb` file before
59
- the `Bundler.require` call to fix all the callers outside of your application.
60
- MSG
61
- formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
62
- else
63
- "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby Time#to_s format
64
- end
65
- else
66
- ActiveSupport::Deprecation.warn(
67
- "TimeWithZone#to_s(#{format.inspect}) is deprecated. Please use TimeWithZone#to_fs(#{format.inspect}) instead."
68
- )
69
- "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby Time#to_s format
70
- end
71
- end
72
- end
73
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ActiveSupport::Deprecation.warn(<<-MSG.squish)
4
- `active_support/core_ext/uri` is deprecated and will be removed in Rails 7.1.
5
- MSG
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "active_support/core_ext/module/delegation"
4
-
5
- module ActiveSupport
6
- # NOTE: This approach has been deprecated for end-user code in favor of {thread_mattr_accessor}[rdoc-ref:Module#thread_mattr_accessor] and friends.
7
- # Please use that approach instead.
8
- #
9
- # This module is used to encapsulate access to thread local variables.
10
- #
11
- # Instead of polluting the thread locals namespace:
12
- #
13
- # Thread.current[:connection_handler]
14
- #
15
- # you define a class that extends this module:
16
- #
17
- # module ActiveRecord
18
- # class RuntimeRegistry
19
- # extend ActiveSupport::PerThreadRegistry
20
- #
21
- # attr_accessor :connection_handler
22
- # end
23
- # end
24
- #
25
- # and invoke the declared instance accessors as class methods. So
26
- #
27
- # ActiveRecord::RuntimeRegistry.connection_handler = connection_handler
28
- #
29
- # sets a connection handler local to the current thread, and
30
- #
31
- # ActiveRecord::RuntimeRegistry.connection_handler
32
- #
33
- # returns a connection handler local to the current thread.
34
- #
35
- # This feature is accomplished by instantiating the class and storing the
36
- # instance as a thread local keyed by the class name. In the example above
37
- # a key "ActiveRecord::RuntimeRegistry" is stored in <tt>Thread.current</tt>.
38
- # The class methods proxy to said thread local instance.
39
- #
40
- # If the class has an initializer, it must accept no arguments.
41
- module PerThreadRegistry
42
- def self.extended(object)
43
- ActiveSupport::Deprecation.warn(<<~MSG)
44
- ActiveSupport::PerThreadRegistry is deprecated and will be removed in Rails 7.1.
45
- Use `Module#thread_mattr_accessor` instead.
46
- MSG
47
- object.instance_variable_set :@per_thread_registry_key, object.name.freeze
48
- end
49
-
50
- def instance
51
- Thread.current[@per_thread_registry_key] ||= new
52
- end
53
-
54
- private
55
- def method_missing(name, *args, &block)
56
- # Caches the method definition as a singleton method of the receiver.
57
- #
58
- # By letting #delegate handle it, we avoid an enclosure that'll capture args.
59
- singleton_class.delegate name, to: :instance
60
-
61
- send(name, *args, &block)
62
- end
63
- ruby2_keywords(:method_missing)
64
- end
65
- end