activesupport 7.0.8 → 7.2.0
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 +4 -4
- data/CHANGELOG.md +134 -446
- data/MIT-LICENSE +1 -1
- data/README.rdoc +4 -4
- data/lib/active_support/actionable_error.rb +3 -1
- data/lib/active_support/array_inquirer.rb +3 -1
- data/lib/active_support/backtrace_cleaner.rb +39 -7
- data/lib/active_support/benchmarkable.rb +1 -0
- data/lib/active_support/broadcast_logger.rb +251 -0
- data/lib/active_support/builder.rb +1 -1
- data/lib/active_support/cache/coder.rb +153 -0
- data/lib/active_support/cache/entry.rb +134 -0
- data/lib/active_support/cache/file_store.rb +49 -17
- data/lib/active_support/cache/mem_cache_store.rb +94 -128
- data/lib/active_support/cache/memory_store.rb +80 -25
- data/lib/active_support/cache/null_store.rb +6 -0
- data/lib/active_support/cache/redis_cache_store.rb +165 -152
- data/lib/active_support/cache/serializer_with_fallback.rb +152 -0
- data/lib/active_support/cache/strategy/local_cache.rb +29 -14
- data/lib/active_support/cache.rb +363 -291
- data/lib/active_support/callbacks.rb +118 -134
- data/lib/active_support/code_generator.rb +15 -10
- data/lib/active_support/concern.rb +4 -2
- data/lib/active_support/concurrency/load_interlock_aware_monitor.rb +42 -3
- data/lib/active_support/concurrency/null_lock.rb +13 -0
- data/lib/active_support/configurable.rb +10 -0
- data/lib/active_support/core_ext/array/conversions.rb +1 -2
- data/lib/active_support/core_ext/array.rb +0 -1
- data/lib/active_support/core_ext/class/subclasses.rb +17 -34
- data/lib/active_support/core_ext/date/blank.rb +4 -0
- data/lib/active_support/core_ext/date/conversions.rb +1 -2
- data/lib/active_support/core_ext/date.rb +0 -1
- data/lib/active_support/core_ext/date_and_time/calculations.rb +10 -0
- data/lib/active_support/core_ext/date_and_time/compatibility.rb +28 -1
- data/lib/active_support/core_ext/date_time/blank.rb +4 -0
- data/lib/active_support/core_ext/date_time/conversions.rb +2 -2
- data/lib/active_support/core_ext/date_time.rb +0 -1
- data/lib/active_support/core_ext/digest/uuid.rb +7 -10
- data/lib/active_support/core_ext/enumerable.rb +3 -75
- data/lib/active_support/core_ext/erb/util.rb +201 -0
- data/lib/active_support/core_ext/hash/conversions.rb +1 -1
- data/lib/active_support/core_ext/hash/deep_merge.rb +22 -14
- data/lib/active_support/core_ext/hash/keys.rb +4 -4
- data/lib/active_support/core_ext/module/attr_internal.rb +17 -6
- data/lib/active_support/core_ext/module/attribute_accessors.rb +6 -0
- data/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb +34 -16
- data/lib/active_support/core_ext/module/concerning.rb +6 -6
- data/lib/active_support/core_ext/module/delegation.rb +20 -119
- data/lib/active_support/core_ext/module/deprecation.rb +12 -12
- data/lib/active_support/core_ext/module/introspection.rb +0 -1
- data/lib/active_support/core_ext/numeric/bytes.rb +9 -0
- data/lib/active_support/core_ext/numeric/conversions.rb +5 -3
- data/lib/active_support/core_ext/numeric.rb +0 -1
- data/lib/active_support/core_ext/object/blank.rb +45 -1
- data/lib/active_support/core_ext/object/deep_dup.rb +16 -0
- data/lib/active_support/core_ext/object/duplicable.rb +24 -15
- data/lib/active_support/core_ext/object/inclusion.rb +13 -5
- data/lib/active_support/core_ext/object/instance_variables.rb +4 -2
- data/lib/active_support/core_ext/object/json.rb +12 -4
- data/lib/active_support/core_ext/object/with.rb +46 -0
- data/lib/active_support/core_ext/object/with_options.rb +4 -4
- data/lib/active_support/core_ext/object.rb +1 -0
- data/lib/active_support/core_ext/pathname/blank.rb +20 -0
- data/lib/active_support/core_ext/pathname/existence.rb +2 -0
- data/lib/active_support/core_ext/pathname.rb +1 -0
- data/lib/active_support/core_ext/range/conversions.rb +28 -7
- data/lib/active_support/core_ext/range/overlap.rb +40 -0
- data/lib/active_support/core_ext/range.rb +1 -2
- data/lib/active_support/core_ext/securerandom.rb +1 -5
- data/lib/active_support/core_ext/string/conversions.rb +1 -1
- data/lib/active_support/core_ext/string/filters.rb +21 -15
- data/lib/active_support/core_ext/string/indent.rb +1 -1
- data/lib/active_support/core_ext/string/inflections.rb +16 -5
- data/lib/active_support/core_ext/string/output_safety.rb +34 -177
- data/lib/active_support/core_ext/thread/backtrace/location.rb +12 -0
- data/lib/active_support/core_ext/time/calculations.rb +36 -30
- data/lib/active_support/core_ext/time/compatibility.rb +16 -0
- data/lib/active_support/core_ext/time/conversions.rb +1 -3
- data/lib/active_support/core_ext/time/zones.rb +4 -4
- data/lib/active_support/core_ext/time.rb +0 -1
- data/lib/active_support/core_ext.rb +0 -1
- data/lib/active_support/current_attributes.rb +48 -46
- data/lib/active_support/deep_mergeable.rb +53 -0
- data/lib/active_support/delegation.rb +202 -0
- data/lib/active_support/dependencies/autoload.rb +9 -16
- data/lib/active_support/deprecation/behaviors.rb +65 -42
- data/lib/active_support/deprecation/constant_accessor.rb +47 -25
- data/lib/active_support/deprecation/deprecators.rb +104 -0
- data/lib/active_support/deprecation/disallowed.rb +3 -5
- data/lib/active_support/deprecation/method_wrappers.rb +6 -23
- data/lib/active_support/deprecation/proxy_wrappers.rb +34 -22
- data/lib/active_support/deprecation/reporting.rb +48 -26
- data/lib/active_support/deprecation.rb +39 -9
- data/lib/active_support/deprecator.rb +7 -0
- data/lib/active_support/descendants_tracker.rb +66 -172
- data/lib/active_support/duration/iso8601_parser.rb +2 -2
- data/lib/active_support/duration/iso8601_serializer.rb +1 -4
- data/lib/active_support/duration.rb +13 -7
- data/lib/active_support/encrypted_configuration.rb +30 -9
- data/lib/active_support/encrypted_file.rb +8 -3
- data/lib/active_support/environment_inquirer.rb +22 -2
- data/lib/active_support/error_reporter/test_helper.rb +15 -0
- data/lib/active_support/error_reporter.rb +160 -36
- data/lib/active_support/evented_file_update_checker.rb +0 -1
- data/lib/active_support/execution_wrapper.rb +4 -5
- data/lib/active_support/file_update_checker.rb +5 -3
- data/lib/active_support/fork_tracker.rb +4 -32
- data/lib/active_support/gem_version.rb +3 -3
- data/lib/active_support/gzip.rb +2 -0
- data/lib/active_support/hash_with_indifferent_access.rb +41 -25
- data/lib/active_support/html_safe_translation.rb +19 -6
- data/lib/active_support/i18n.rb +1 -1
- data/lib/active_support/i18n_railtie.rb +20 -13
- data/lib/active_support/inflector/inflections.rb +2 -0
- data/lib/active_support/inflector/methods.rb +23 -11
- data/lib/active_support/inflector/transliterate.rb +3 -1
- data/lib/active_support/isolated_execution_state.rb +26 -22
- data/lib/active_support/json/decoding.rb +2 -1
- data/lib/active_support/json/encoding.rb +25 -43
- data/lib/active_support/key_generator.rb +9 -1
- data/lib/active_support/lazy_load_hooks.rb +6 -4
- data/lib/active_support/locale/en.yml +2 -0
- data/lib/active_support/log_subscriber.rb +74 -34
- data/lib/active_support/logger.rb +22 -60
- data/lib/active_support/logger_thread_safe_level.rb +10 -32
- data/lib/active_support/message_encryptor.rb +197 -53
- data/lib/active_support/message_encryptors.rb +141 -0
- data/lib/active_support/message_pack/cache_serializer.rb +23 -0
- data/lib/active_support/message_pack/extensions.rb +305 -0
- data/lib/active_support/message_pack/serializer.rb +63 -0
- data/lib/active_support/message_pack.rb +50 -0
- data/lib/active_support/message_verifier.rb +220 -89
- data/lib/active_support/message_verifiers.rb +135 -0
- data/lib/active_support/messages/codec.rb +65 -0
- data/lib/active_support/messages/metadata.rb +111 -45
- data/lib/active_support/messages/rotation_coordinator.rb +93 -0
- data/lib/active_support/messages/rotator.rb +34 -32
- data/lib/active_support/messages/serializer_with_fallback.rb +158 -0
- data/lib/active_support/multibyte/chars.rb +4 -2
- data/lib/active_support/multibyte/unicode.rb +9 -37
- data/lib/active_support/notifications/fanout.rb +248 -87
- data/lib/active_support/notifications/instrumenter.rb +93 -25
- data/lib/active_support/notifications.rb +29 -28
- data/lib/active_support/number_helper/number_converter.rb +16 -7
- data/lib/active_support/number_helper/number_to_currency_converter.rb +6 -6
- data/lib/active_support/number_helper/number_to_human_size_converter.rb +3 -3
- data/lib/active_support/number_helper/number_to_phone_converter.rb +1 -0
- data/lib/active_support/number_helper.rb +379 -318
- data/lib/active_support/option_merger.rb +2 -2
- data/lib/active_support/ordered_hash.rb +3 -3
- data/lib/active_support/ordered_options.rb +67 -15
- data/lib/active_support/parameter_filter.rb +84 -69
- data/lib/active_support/proxy_object.rb +8 -3
- data/lib/active_support/railtie.rb +25 -20
- data/lib/active_support/reloader.rb +12 -4
- data/lib/active_support/rescuable.rb +2 -0
- data/lib/active_support/secure_compare_rotator.rb +16 -9
- data/lib/active_support/string_inquirer.rb +4 -2
- data/lib/active_support/subscriber.rb +9 -27
- data/lib/active_support/syntax_error_proxy.rb +60 -0
- data/lib/active_support/tagged_logging.rb +64 -25
- data/lib/active_support/test_case.rb +156 -7
- data/lib/active_support/testing/assertions.rb +28 -12
- data/lib/active_support/testing/autorun.rb +0 -2
- data/lib/active_support/testing/constant_stubbing.rb +54 -0
- data/lib/active_support/testing/deprecation.rb +20 -27
- data/lib/active_support/testing/error_reporter_assertions.rb +107 -0
- data/lib/active_support/testing/isolation.rb +19 -9
- data/lib/active_support/testing/method_call_assertions.rb +7 -8
- data/lib/active_support/testing/parallelize_executor.rb +8 -3
- data/lib/active_support/testing/setup_and_teardown.rb +2 -0
- data/lib/active_support/testing/stream.rb +1 -1
- data/lib/active_support/testing/strict_warnings.rb +40 -0
- data/lib/active_support/testing/tests_without_assertions.rb +19 -0
- data/lib/active_support/testing/time_helpers.rb +38 -16
- data/lib/active_support/time_with_zone.rb +11 -17
- data/lib/active_support/values/time_zone.rb +19 -8
- data/lib/active_support/version.rb +1 -1
- data/lib/active_support/xml_mini/jdom.rb +3 -10
- data/lib/active_support/xml_mini/nokogiri.rb +1 -1
- data/lib/active_support/xml_mini/nokogirisax.rb +1 -1
- data/lib/active_support/xml_mini/rexml.rb +1 -1
- data/lib/active_support/xml_mini.rb +12 -3
- data/lib/active_support.rb +15 -3
- metadata +128 -21
- data/lib/active_support/core_ext/array/deprecated_conversions.rb +0 -25
- data/lib/active_support/core_ext/date/deprecated_conversions.rb +0 -40
- data/lib/active_support/core_ext/date_time/deprecated_conversions.rb +0 -36
- data/lib/active_support/core_ext/numeric/deprecated_conversions.rb +0 -60
- data/lib/active_support/core_ext/range/deprecated_conversions.rb +0 -36
- data/lib/active_support/core_ext/range/include_time_with_zone.rb +0 -5
- data/lib/active_support/core_ext/range/overlaps.rb +0 -10
- data/lib/active_support/core_ext/time/deprecated_conversions.rb +0 -73
- data/lib/active_support/core_ext/uri.rb +0 -5
- data/lib/active_support/deprecation/instance_delegator.rb +0 -38
- data/lib/active_support/per_thread_registry.rb +0 -65
- data/lib/active_support/ruby_features.rb +0 -7
@@ -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,10 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Range
|
4
|
-
# Compare two ranges and see if they overlap each other
|
5
|
-
# (1..5).overlaps?(4..6) # => true
|
6
|
-
# (1..5).overlaps?(7..9) # => false
|
7
|
-
def overlaps?(other)
|
8
|
-
other.begin == self.begin || cover?(other.begin) || other.cover?(self.begin)
|
9
|
-
end
|
10
|
-
end
|
@@ -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,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "active_support/core_ext/module/delegation"
|
4
|
-
|
5
|
-
module ActiveSupport
|
6
|
-
class Deprecation
|
7
|
-
module InstanceDelegator # :nodoc:
|
8
|
-
def self.included(base)
|
9
|
-
base.extend(ClassMethods)
|
10
|
-
base.singleton_class.prepend(OverrideDelegators)
|
11
|
-
base.public_class_method :new
|
12
|
-
end
|
13
|
-
|
14
|
-
module ClassMethods # :nodoc:
|
15
|
-
def include(included_module)
|
16
|
-
included_module.instance_methods.each { |m| method_added(m) }
|
17
|
-
super
|
18
|
-
end
|
19
|
-
|
20
|
-
def method_added(method_name)
|
21
|
-
singleton_class.delegate(method_name, to: :instance)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
module OverrideDelegators # :nodoc:
|
26
|
-
def warn(message = nil, callstack = nil)
|
27
|
-
callstack ||= caller_locations(2)
|
28
|
-
super
|
29
|
-
end
|
30
|
-
|
31
|
-
def deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil)
|
32
|
-
caller_backtrace ||= caller_locations(2)
|
33
|
-
super
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -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
|