activesupport 7.0.0 → 7.2.2.1
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 +156 -255
- data/MIT-LICENSE +1 -1
- data/README.rdoc +6 -6
- 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 +41 -9
- 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 +111 -129
- data/lib/active_support/cache/memory_store.rb +81 -26
- data/lib/active_support/cache/null_store.rb +6 -0
- data/lib/active_support/cache/redis_cache_store.rb +175 -154
- data/lib/active_support/cache/serializer_with_fallback.rb +152 -0
- data/lib/active_support/cache/strategy/local_cache.rb +31 -13
- data/lib/active_support/cache.rb +457 -377
- data/lib/active_support/callbacks.rb +123 -139
- 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 +12 -2
- data/lib/active_support/core_ext/array/conversions.rb +7 -9
- data/lib/active_support/core_ext/array/inquiry.rb +2 -2
- data/lib/active_support/core_ext/array.rb +0 -1
- data/lib/active_support/core_ext/class/subclasses.rb +4 -15
- data/lib/active_support/core_ext/date/blank.rb +4 -0
- data/lib/active_support/core_ext/date/calculations.rb +20 -5
- data/lib/active_support/core_ext/date/conversions.rb +15 -16
- data/lib/active_support/core_ext/date.rb +0 -1
- data/lib/active_support/core_ext/date_and_time/calculations.rb +14 -4
- data/lib/active_support/core_ext/date_and_time/compatibility.rb +29 -2
- data/lib/active_support/core_ext/date_time/blank.rb +4 -0
- data/lib/active_support/core_ext/date_time/calculations.rb +4 -0
- data/lib/active_support/core_ext/date_time/conversions.rb +15 -15
- 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 +51 -101
- data/lib/active_support/core_ext/erb/util.rb +201 -0
- data/lib/active_support/core_ext/file/atomic.rb +2 -0
- data/lib/active_support/core_ext/hash/conversions.rb +1 -2
- data/lib/active_support/core_ext/hash/deep_merge.rb +22 -14
- data/lib/active_support/core_ext/hash/deep_transform_values.rb +3 -3
- data/lib/active_support/core_ext/hash/indifferent_access.rb +3 -3
- data/lib/active_support/core_ext/hash/keys.rb +7 -7
- data/lib/active_support/core_ext/integer/inflections.rb +12 -12
- data/lib/active_support/core_ext/kernel/singleton_class.rb +1 -1
- 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 +38 -20
- 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 +77 -75
- data/lib/active_support/core_ext/numeric.rb +0 -1
- data/lib/active_support/core_ext/object/acts_like.rb +29 -5
- 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 +25 -16
- 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 +17 -7
- data/lib/active_support/core_ext/object/to_query.rb +0 -2
- data/lib/active_support/core_ext/object/with.rb +46 -0
- data/lib/active_support/core_ext/object/with_options.rb +9 -9
- 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 +32 -11
- 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 +2 -6
- data/lib/active_support/core_ext/string/conversions.rb +3 -3
- 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 -9
- data/lib/active_support/core_ext/string/inquiry.rb +1 -1
- data/lib/active_support/core_ext/string/multibyte.rb +1 -1
- data/lib/active_support/core_ext/string/output_safety.rb +39 -150
- data/lib/active_support/core_ext/thread/backtrace/location.rb +12 -0
- data/lib/active_support/core_ext/time/calculations.rb +42 -32
- data/lib/active_support/core_ext/time/compatibility.rb +16 -0
- data/lib/active_support/core_ext/time/conversions.rb +13 -15
- data/lib/active_support/core_ext/time/zones.rb +8 -9
- 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 +53 -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 +6 -8
- 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 +49 -27
- data/lib/active_support/deprecation.rb +39 -9
- data/lib/active_support/deprecator.rb +7 -0
- data/lib/active_support/descendants_tracker.rb +66 -175
- 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 +63 -10
- data/lib/active_support/encrypted_file.rb +29 -13
- 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 +19 -7
- data/lib/active_support/execution_wrapper.rb +23 -28
- 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 +4 -4
- 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 +28 -18
- data/lib/active_support/inflector/transliterate.rb +4 -2
- data/lib/active_support/isolated_execution_state.rb +39 -19
- 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 +13 -5
- data/lib/active_support/lazy_load_hooks.rb +33 -7
- data/lib/active_support/locale/en.yml +2 -0
- data/lib/active_support/log_subscriber/test_helper.rb +2 -2
- data/lib/active_support/log_subscriber.rb +76 -36
- 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 +200 -55
- 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 +38 -31
- 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 -317
- data/lib/active_support/option_merger.rb +4 -4
- data/lib/active_support/ordered_hash.rb +3 -3
- data/lib/active_support/ordered_options.rb +68 -16
- data/lib/active_support/parameter_filter.rb +103 -84
- data/lib/active_support/proxy_object.rb +8 -3
- data/lib/active_support/railtie.rb +30 -25
- data/lib/active_support/reloader.rb +13 -5
- data/lib/active_support/rescuable.rb +12 -10
- data/lib/active_support/secure_compare_rotator.rb +17 -10
- data/lib/active_support/string_inquirer.rb +4 -2
- data/lib/active_support/subscriber.rb +10 -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 +160 -7
- data/lib/active_support/testing/assertions.rb +29 -13
- 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 +46 -33
- data/lib/active_support/testing/method_call_assertions.rb +7 -8
- data/lib/active_support/testing/parallelization/server.rb +3 -0
- 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 +43 -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 +28 -54
- data/lib/active_support/values/time_zone.rb +26 -15
- 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 +13 -4
- data/lib/active_support.rb +15 -3
- metadata +142 -21
- data/lib/active_support/core_ext/array/deprecated_conversions.rb +0 -25
- data/lib/active_support/core_ext/date/deprecated_conversions.rb +0 -26
- data/lib/active_support/core_ext/date_time/deprecated_conversions.rb +0 -22
- data/lib/active_support/core_ext/numeric/deprecated_conversions.rb +0 -60
- data/lib/active_support/core_ext/range/deprecated_conversions.rb +0 -26
- data/lib/active_support/core_ext/range/include_time_with_zone.rb +0 -7
- data/lib/active_support/core_ext/range/overlaps.rb +0 -10
- data/lib/active_support/core_ext/time/deprecated_conversions.rb +0 -22
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 293fd0b5b00d65684b3e0e8682c75a361d31fdb569fabc55888c4c11d7205ca0
|
4
|
+
data.tar.gz: 8b40c8ed09b9a5eaa3173eb5701dde9fe047590b80f8b4e36b732596ff1e4e43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 762f738afc162c559a65a55a9134d105ff18b413a548ff5782481dff8cd8232c4ad3bd62c5f31f67d900594b9d61f7f95d650fea11f03bc269261f69a40aa7f9
|
7
|
+
data.tar.gz: 5df006379973b96c7bb71ff559f2bef45a2c6faee3017536e49d0f5884751efb43451016657244111bfe534320448510d24f9c071aae1f22d218e0ca277ba32a
|
data/CHANGELOG.md
CHANGED
@@ -1,383 +1,284 @@
|
|
1
|
-
## Rails 7.
|
2
|
-
|
3
|
-
* Fix `ActiveSupport::Duration.build` to support negative values.
|
4
|
-
|
5
|
-
The algorithm to collect the `parts` of the `ActiveSupport::Duration`
|
6
|
-
ignored the sign of the `value` and accumulated incorrect part values. This
|
7
|
-
impacted `ActiveSupport::Duration#sum` (which is dependent on `parts`) but
|
8
|
-
not `ActiveSupport::Duration#eql?` (which is dependent on `value`).
|
9
|
-
|
10
|
-
*Caleb Buxton*, *Braden Staudacher*
|
11
|
-
|
12
|
-
|
13
|
-
## Rails 7.0.0.rc3 (December 14, 2021) ##
|
1
|
+
## Rails 7.2.2.1 (December 10, 2024) ##
|
14
2
|
|
15
3
|
* No changes.
|
16
4
|
|
17
5
|
|
18
|
-
## Rails 7.
|
6
|
+
## Rails 7.2.2 (October 30, 2024) ##
|
19
7
|
|
20
|
-
*
|
8
|
+
* Include options when instrumenting `ActiveSupport::Cache::Store#delete` and `ActiveSupport::Cache::Store#delete_multi`.
|
21
9
|
|
22
|
-
|
10
|
+
*Adam Renberg Tamm*
|
23
11
|
|
24
|
-
*
|
25
|
-
`BigDecimal`, `Float` and, `Integer`.
|
12
|
+
* Print test names when running `rails test -v` for parallel tests.
|
26
13
|
|
27
|
-
*
|
14
|
+
*John Hawthorn*, *Abeid Ahmed*
|
28
15
|
|
29
|
-
* Document `ActiveSupport::Testing::Deprecation`.
|
30
16
|
|
31
|
-
|
17
|
+
## Rails 7.2.1.2 (October 23, 2024) ##
|
32
18
|
|
33
|
-
*
|
19
|
+
* No changes.
|
34
20
|
|
35
|
-
```ruby
|
36
|
-
Pathname.new("file").existence&.read
|
37
|
-
```
|
38
21
|
|
39
|
-
|
22
|
+
## Rails 7.2.1.1 (October 15, 2024) ##
|
40
23
|
|
41
|
-
*
|
24
|
+
* No changes.
|
42
25
|
|
43
|
-
*Rafael Mendonça França*
|
44
26
|
|
45
|
-
|
46
|
-
a date time range is deprecated.
|
27
|
+
## Rails 7.2.1 (August 22, 2024) ##
|
47
28
|
|
48
|
-
|
29
|
+
* No changes.
|
49
30
|
|
50
|
-
* Remove deprecated `URI.parser`.
|
51
31
|
|
52
|
-
|
32
|
+
## Rails 7.2.0 (August 09, 2024) ##
|
53
33
|
|
54
|
-
*
|
34
|
+
* Fix `delegate_missing_to allow_nil: true` when called with implict self
|
55
35
|
|
56
|
-
|
36
|
+
```ruby
|
37
|
+
class Person
|
38
|
+
delegate_missing_to :address, allow_nil: true
|
57
39
|
|
58
|
-
|
59
|
-
|
40
|
+
def address
|
41
|
+
nil
|
42
|
+
end
|
60
43
|
|
61
|
-
|
44
|
+
def berliner?
|
45
|
+
city == "Berlin"
|
46
|
+
end
|
47
|
+
end
|
62
48
|
|
63
|
-
|
49
|
+
Person.new.city # => nil
|
50
|
+
Person.new.berliner? # undefined local variable or method `city' for an instance of Person (NameError)
|
51
|
+
```
|
64
52
|
|
65
|
-
|
66
|
-
leaking from one test to another.
|
53
|
+
*Jean Boussier*
|
67
54
|
|
68
|
-
|
55
|
+
* Add `logger` as a dependency since it is a bundled gem candidate for Ruby 3.5
|
69
56
|
|
70
|
-
|
57
|
+
*Earlopain*
|
71
58
|
|
72
|
-
|
59
|
+
* Define `Digest::UUID.nil_uuid`, which returns the so-called nil UUID.
|
73
60
|
|
74
|
-
*
|
61
|
+
*Xavier Noria*
|
75
62
|
|
76
|
-
|
63
|
+
* Support `duration` type in `ActiveSupport::XmlMini`.
|
77
64
|
|
78
|
-
|
65
|
+
*heka1024*
|
79
66
|
|
80
|
-
|
81
|
-
- `ActiveSupport::DescendantsTracker#direct_descendants`
|
67
|
+
* Remove deprecated `ActiveSupport::Notifications::Event#children` and `ActiveSupport::Notifications::Event#parent_of?`.
|
82
68
|
|
83
|
-
*
|
69
|
+
*Rafael Mendonça França*
|
84
70
|
|
85
|
-
*
|
71
|
+
* Remove deprecated support to call the following methods without passing a deprecator:
|
86
72
|
|
87
|
-
|
88
|
-
|
89
|
-
|
73
|
+
- `deprecate`
|
74
|
+
- `deprecate_constant`
|
75
|
+
- `ActiveSupport::Deprecation::DeprecatedObjectProxy.new`
|
76
|
+
- `ActiveSupport::Deprecation::DeprecatedInstanceVariableProxy.new`
|
77
|
+
- `ActiveSupport::Deprecation::DeprecatedConstantProxy.new`
|
78
|
+
- `assert_deprecated`
|
79
|
+
- `assert_not_deprecated`
|
80
|
+
- `collect_deprecations`
|
90
81
|
|
91
|
-
|
92
|
-
deprecation warning every time a value that is different than one of
|
93
|
-
the constants defined on the `Digest::UUID` extension is used as the
|
94
|
-
namespace ID.
|
82
|
+
*Rafael Mendonça França*
|
95
83
|
|
96
|
-
|
84
|
+
* Remove deprecated `ActiveSupport::Deprecation` delegation to instance.
|
97
85
|
|
98
|
-
*
|
99
|
-
and `inflector.clear` / `inflector.clear(:all)` also clears acronyms.
|
86
|
+
*Rafael Mendonça França*
|
100
87
|
|
101
|
-
|
88
|
+
* Remove deprecated `SafeBuffer#clone_empty`.
|
102
89
|
|
90
|
+
*Rafael Mendonça França*
|
103
91
|
|
104
|
-
|
92
|
+
* Remove deprecated `#to_default_s` from `Array`, `Date`, `DateTime` and `Time`.
|
105
93
|
|
106
|
-
*
|
94
|
+
*Rafael Mendonça França*
|
107
95
|
|
96
|
+
* Remove deprecated support to passing `Dalli::Client` instances to `MemCacheStore`.
|
108
97
|
|
109
|
-
|
98
|
+
*Rafael Mendonça França*
|
110
99
|
|
111
|
-
*
|
100
|
+
* Remove deprecated `config.active_support.use_rfc4122_namespaced_uuids`.
|
112
101
|
|
113
|
-
*
|
102
|
+
*Rafael Mendonça França*
|
114
103
|
|
115
|
-
*
|
104
|
+
* Remove deprecated `config.active_support.remove_deprecated_time_with_zone_name`.
|
116
105
|
|
117
|
-
*
|
106
|
+
*Rafael Mendonça França*
|
118
107
|
|
119
|
-
*
|
108
|
+
* Remove deprecated `config.active_support.disable_to_s_conversion`.
|
120
109
|
|
121
|
-
*
|
110
|
+
*Rafael Mendonça França*
|
122
111
|
|
123
|
-
*
|
112
|
+
* Remove deprecated support to bolding log text with positional boolean in `ActiveSupport::LogSubscriber#color`.
|
124
113
|
|
125
|
-
*
|
114
|
+
*Rafael Mendonça França*
|
126
115
|
|
127
|
-
*
|
116
|
+
* Remove deprecated constants `ActiveSupport::LogSubscriber::CLEAR` and `ActiveSupport::LogSubscriber::BOLD`.
|
128
117
|
|
129
|
-
|
130
|
-
the error handler would be rescued and logged only. Removed the `rescue` clause from `handle_exception`
|
131
|
-
to allow these to be thrown.
|
118
|
+
*Rafael Mendonça França*
|
132
119
|
|
133
|
-
|
120
|
+
* Remove deprecated support for `config.active_support.cache_format_version = 6.1`.
|
134
121
|
|
135
|
-
*
|
122
|
+
*Rafael Mendonça França*
|
136
123
|
|
137
|
-
|
138
|
-
still be done on each call to `ActiveSupport::Deprecation.warn`. In very hot paths, this could
|
139
|
-
cause performance issues.
|
124
|
+
* Remove deprecated `:pool_size` and `:pool_timeout` options for the cache storage.
|
140
125
|
|
141
|
-
|
126
|
+
*Rafael Mendonça França*
|
142
127
|
|
143
|
-
|
144
|
-
config.active_support.report_deprecations = false
|
145
|
-
```
|
128
|
+
* Warn on tests without assertions.
|
146
129
|
|
147
|
-
|
130
|
+
`ActiveSupport::TestCase` now warns when tests do not run any assertions.
|
131
|
+
This is helpful in detecting broken tests that do not perform intended assertions.
|
148
132
|
|
149
|
-
|
150
|
-
config.active_support.deprecation = :silence
|
151
|
-
config.active_support.disallowed_deprecation = :silence
|
152
|
-
```
|
133
|
+
*fatkodima*
|
153
134
|
|
154
|
-
|
135
|
+
* Support `hexBinary` type in `ActiveSupport::XmlMini`.
|
155
136
|
|
156
|
-
*
|
137
|
+
*heka1024*
|
157
138
|
|
158
|
-
*
|
159
|
-
of them.
|
139
|
+
* Deprecate `ActiveSupport::ProxyObject` in favor of Ruby's built-in `BasicObject`.
|
160
140
|
|
161
|
-
|
162
|
-
setup and fixture loading. Now, Rails will only parallelize test executions when
|
163
|
-
there are enough tests to make it worth it.
|
141
|
+
*Earlopain*
|
164
142
|
|
165
|
-
|
166
|
-
your test.rb:
|
143
|
+
* `stub_const` now accepts a `exists: false` parameter to allow stubbing missing constants.
|
167
144
|
|
168
|
-
|
169
|
-
config.active_support.test_parallelization_threshold = 100
|
170
|
-
```
|
145
|
+
*Jean Boussier*
|
171
146
|
|
172
|
-
|
147
|
+
* Make `ActiveSupport::BacktraceCleaner` copy filters and silencers on dup and clone.
|
173
148
|
|
174
|
-
|
175
|
-
|
176
|
-
parallelize threshold: 100
|
177
|
-
end
|
178
|
-
```
|
149
|
+
Previously the copy would still share the internal silencers and filters array,
|
150
|
+
causing state to leak.
|
179
151
|
|
180
|
-
*
|
152
|
+
*Jean Boussier*
|
181
153
|
|
182
|
-
*
|
154
|
+
* Updating Astana with Western Kazakhstan TZInfo identifier.
|
183
155
|
|
184
|
-
*
|
156
|
+
*Damian Nelson*
|
185
157
|
|
186
|
-
*
|
187
|
-
A valid ordinal value will be converted to an instance of `TimeWithZone` using the `:year`
|
188
|
-
and `:yday` fragments returned from `Date._iso8601`.
|
158
|
+
* Add filename support for `ActiveSupport::Logger.logger_outputs_to?`.
|
189
159
|
|
190
160
|
```ruby
|
191
|
-
|
192
|
-
|
161
|
+
logger = Logger.new('/var/log/rails.log')
|
162
|
+
ActiveSupport::Logger.logger_outputs_to?(logger, '/var/log/rails.log')
|
193
163
|
```
|
194
164
|
|
195
|
-
*
|
196
|
-
|
197
|
-
* `Time#change` and methods that call it (e.g. `Time#advance`) will now
|
198
|
-
return a `Time` with the timezone argument provided, if the caller was
|
199
|
-
initialized with a timezone argument.
|
200
|
-
|
201
|
-
Fixes [#42467](https://github.com/rails/rails/issues/42467).
|
165
|
+
*Christian Schmidt*
|
202
166
|
|
203
|
-
|
167
|
+
* Include `IPAddr#prefix` when serializing an `IPAddr` using the
|
168
|
+
`ActiveSupport::MessagePack` serializer.
|
204
169
|
|
205
|
-
|
170
|
+
This change is backward and forward compatible — old payloads can
|
171
|
+
still be read, and new payloads will be readable by older versions of Rails.
|
206
172
|
|
207
|
-
*
|
173
|
+
*Taiki Komaba*
|
208
174
|
|
209
|
-
*
|
210
|
-
`RAILS_MASTER_KEY` environment variable is blank (e.g. `""`).
|
211
|
-
|
212
|
-
*Sunny Ripert*
|
213
|
-
|
214
|
-
* The `from:` option is added to `ActiveSupport::TestCase#assert_no_changes`.
|
215
|
-
|
216
|
-
It permits asserting on the initial value that is expected not to change.
|
175
|
+
* Add `default:` support for `ActiveSupport::CurrentAttributes.attribute`.
|
217
176
|
|
218
177
|
```ruby
|
219
|
-
|
220
|
-
|
178
|
+
class Current < ActiveSupport::CurrentAttributes
|
179
|
+
attribute :counter, default: 0
|
221
180
|
end
|
222
181
|
```
|
223
182
|
|
224
|
-
*
|
225
|
-
|
226
|
-
* Deprecate `ActiveSupport::SafeBuffer`'s incorrect implicit conversion of objects into string.
|
227
|
-
|
228
|
-
Except for a few methods like `String#%`, objects must implement `#to_str`
|
229
|
-
to be implicitly converted to a String in string operations. In some
|
230
|
-
circumstances `ActiveSupport::SafeBuffer` was incorrectly calling the
|
231
|
-
explicit conversion method (`#to_s`) on them. This behavior is now
|
232
|
-
deprecated.
|
233
|
-
|
234
|
-
*Jean Boussier*
|
235
|
-
|
236
|
-
* Allow nested access to keys on `Rails.application.credentials`.
|
237
|
-
|
238
|
-
Previously only top level keys in `credentials.yml.enc` could be accessed with method calls. Now any key can.
|
183
|
+
*Sean Doyle*
|
239
184
|
|
240
|
-
|
185
|
+
* Yield instance to `Object#with` block.
|
241
186
|
|
242
|
-
```
|
243
|
-
|
244
|
-
|
245
|
-
|
187
|
+
```ruby
|
188
|
+
client.with(timeout: 5_000) do |c|
|
189
|
+
c.get("/commits")
|
190
|
+
end
|
246
191
|
```
|
247
192
|
|
248
|
-
|
249
|
-
`Rails.application.credentials.aws[:access_key_id]`.
|
250
|
-
|
251
|
-
*Alex Ghiculescu*
|
252
|
-
|
253
|
-
* Added a faster and more compact `ActiveSupport::Cache` serialization format.
|
254
|
-
|
255
|
-
It can be enabled with `config.active_support.cache_format_version = 7.0` or
|
256
|
-
`config.load_defaults 7.0`. Regardless of the configuration Active Support
|
257
|
-
7.0 can read cache entries serialized by Active Support 6.1 which allows to
|
258
|
-
upgrade without invalidating the cache. However Rails 6.1 can't read the
|
259
|
-
new format, so all readers must be upgraded before the new format is enabled.
|
260
|
-
|
261
|
-
*Jean Boussier*
|
262
|
-
|
263
|
-
* Add `Enumerable#sole`, per `ActiveRecord::FinderMethods#sole`. Returns the
|
264
|
-
sole item of the enumerable, raising if no items are found, or if more than
|
265
|
-
one is.
|
266
|
-
|
267
|
-
*Asherah Connor*
|
268
|
-
|
269
|
-
* Freeze `ActiveSupport::Duration#parts` and remove writer methods.
|
270
|
-
|
271
|
-
Durations are meant to be value objects and should not be mutated.
|
272
|
-
|
273
|
-
*Andrew White*
|
274
|
-
|
275
|
-
* Fix `ActiveSupport::TimeZone#utc_to_local` with fractional seconds.
|
276
|
-
|
277
|
-
When `utc_to_local_returns_utc_offset_times` is false and the time
|
278
|
-
instance had fractional seconds the new UTC time instance was out by
|
279
|
-
a factor of 1,000,000 as the `Time.utc` constructor takes a usec
|
280
|
-
value and not a fractional second value.
|
281
|
-
|
282
|
-
*Andrew White*
|
193
|
+
*Sean Doyle*
|
283
194
|
|
284
|
-
*
|
195
|
+
* Use logical core count instead of physical core count to determine the
|
196
|
+
default number of workers when parallelizing tests.
|
285
197
|
|
286
|
-
|
287
|
-
Rails.cache.write(key, value, expires_at: Time.now.at_end_of_hour)
|
288
|
-
```
|
198
|
+
*Jonathan Hefner*
|
289
199
|
|
290
|
-
|
200
|
+
* Fix `Time.now/DateTime.now/Date.today` to return results in a system timezone after `#travel_to`.
|
291
201
|
|
292
|
-
|
202
|
+
There is a bug in the current implementation of #travel_to:
|
203
|
+
it remembers a timezone of its argument, and all stubbed methods start
|
204
|
+
returning results in that remembered timezone. However, the expected
|
205
|
+
behavior is to return results in a system timezone.
|
293
206
|
|
294
|
-
*
|
207
|
+
*Aleksei Chernenkov*
|
295
208
|
|
296
|
-
*
|
297
|
-
is considerably faster.
|
209
|
+
* Add `ErrorReported#unexpected` to report precondition violations.
|
298
210
|
|
299
|
-
|
211
|
+
For example:
|
300
212
|
|
301
213
|
```ruby
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
214
|
+
def edit
|
215
|
+
if published?
|
216
|
+
Rails.error.unexpected("[BUG] Attempting to edit a published article, that shouldn't be possible")
|
217
|
+
return false
|
218
|
+
end
|
219
|
+
# ...
|
220
|
+
end
|
307
221
|
```
|
308
222
|
|
309
|
-
|
310
|
-
|
311
|
-
* Tests parallelization is now disabled when running individual files to prevent the setup overhead.
|
312
|
-
|
313
|
-
It can still be enforced if the environment variable `PARALLEL_WORKERS` is present and set to a value greater than 1.
|
314
|
-
|
315
|
-
*Ricardo Díaz*
|
316
|
-
|
317
|
-
* Fix proxying keyword arguments in `ActiveSupport::CurrentAttributes`.
|
318
|
-
|
319
|
-
*Marcin Kołodziej*
|
223
|
+
The above will raise an error in development and test, but only report the error in production.
|
320
224
|
|
321
|
-
*
|
322
|
-
elements of an enumerable.
|
323
|
-
|
324
|
-
```ruby
|
325
|
-
payments = [Payment.new(5), Payment.new(15), Payment.new(10)]
|
225
|
+
*Jean Boussier*
|
326
226
|
|
327
|
-
|
328
|
-
payments.maximum(:price) # => 15
|
329
|
-
```
|
227
|
+
* Make the order of read_multi and write_multi notifications for `Cache::Store#fetch_multi` operations match the order they are executed in.
|
330
228
|
|
331
|
-
|
332
|
-
See PR [#41404](https://github.com/rails/rails/pull/41404) for an example.
|
229
|
+
*Adam Renberg Tamm*
|
333
230
|
|
334
|
-
|
231
|
+
* Make return values of `Cache::Store#write` consistent.
|
335
232
|
|
336
|
-
|
233
|
+
The return value was not specified before. Now it returns `true` on a successful write,
|
234
|
+
`nil` if there was an error talking to the cache backend, and `false` if the write failed
|
235
|
+
for another reason (e.g. the key already exists and `unless_exist: true` was passed).
|
337
236
|
|
338
|
-
|
339
|
-
config.cache_store = :mem_cache_store, nil
|
237
|
+
*Sander Verdonschot*
|
340
238
|
|
341
|
-
|
239
|
+
* Fix logged cache keys not always matching actual key used by cache action.
|
342
240
|
|
343
|
-
|
241
|
+
*Hartley McGuire*
|
344
242
|
|
345
|
-
|
243
|
+
* Improve error messages of `assert_changes` and `assert_no_changes`.
|
346
244
|
|
347
|
-
|
245
|
+
`assert_changes` error messages now display objects with `.inspect` to make it easier
|
246
|
+
to differentiate nil from empty strings, strings from symbols, etc.
|
247
|
+
`assert_no_changes` error messages now surface the actual value.
|
348
248
|
|
349
|
-
|
350
|
-
```
|
249
|
+
*pcreux*
|
351
250
|
|
352
|
-
|
251
|
+
* Fix `#to_fs(:human_size)` to correctly work with negative numbers.
|
353
252
|
|
354
|
-
*
|
253
|
+
*Earlopain*
|
355
254
|
|
356
|
-
*
|
255
|
+
* Fix `BroadcastLogger#dup` so that it duplicates the logger's `broadcasts`.
|
357
256
|
|
358
|
-
*
|
257
|
+
*Andrew Novoselac*
|
359
258
|
|
360
|
-
* `
|
361
|
-
`String#camelize` behavior.
|
259
|
+
* Fix issue where `bootstrap.rb` overwrites the `level` of a `BroadcastLogger`'s `broadcasts`.
|
362
260
|
|
363
|
-
*
|
261
|
+
*Andrew Novoselac*
|
364
262
|
|
365
|
-
*
|
366
|
-
invalid.
|
263
|
+
* Fix compatibility with the `semantic_logger` gem.
|
367
264
|
|
368
|
-
|
265
|
+
The `semantic_logger` gem doesn't behave exactly like stdlib logger in that
|
266
|
+
`SemanticLogger#level` returns a Symbol while stdlib `Logger#level` returns an Integer.
|
369
267
|
|
370
|
-
|
268
|
+
This caused the various `LogSubscriber` classes in Rails to break when assigned a
|
269
|
+
`SemanticLogger` instance.
|
371
270
|
|
372
|
-
*
|
271
|
+
*Jean Boussier*, *ojab*
|
373
272
|
|
374
|
-
*
|
273
|
+
* Fix MemoryStore to prevent race conditions when incrementing or decrementing.
|
375
274
|
|
376
|
-
*
|
275
|
+
*Pierre Jambet*
|
377
276
|
|
378
|
-
*
|
277
|
+
* Implement `HashWithIndifferentAccess#to_proc`.
|
379
278
|
|
380
|
-
|
279
|
+
Previously, calling `#to_proc` on `HashWithIndifferentAccess` object used inherited `#to_proc`
|
280
|
+
method from the `Hash` class, which was not able to access values using indifferent keys.
|
381
281
|
|
282
|
+
*fatkodima*
|
382
283
|
|
383
|
-
Please check [
|
284
|
+
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/activesupport/CHANGELOG.md) for previous changes.
|
data/MIT-LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
= Active Support -- Utility classes and Ruby extensions from Rails
|
1
|
+
= Active Support -- Utility classes and Ruby extensions from \Rails
|
2
2
|
|
3
3
|
Active Support is a collection of utility classes and standard library
|
4
|
-
extensions that were found useful for the Rails framework. These additions
|
4
|
+
extensions that were found useful for the \Rails framework. These additions
|
5
5
|
reside in this package so they can be loaded as needed in Ruby projects
|
6
|
-
outside of Rails.
|
6
|
+
outside of \Rails.
|
7
7
|
|
8
|
-
You can read more about the extensions in the {Active Support Core Extensions}[https://
|
8
|
+
You can read more about the extensions in the {Active Support Core Extensions}[https://guides.rubyonrails.org/active_support_core_extensions.html] guide.
|
9
9
|
|
10
10
|
== Download and installation
|
11
11
|
|
@@ -13,7 +13,7 @@ The latest version of Active Support can be installed with RubyGems:
|
|
13
13
|
|
14
14
|
$ gem install activesupport
|
15
15
|
|
16
|
-
Source code can be downloaded as part of the Rails project on GitHub:
|
16
|
+
Source code can be downloaded as part of the \Rails project on GitHub:
|
17
17
|
|
18
18
|
* https://github.com/rails/rails/tree/main/activesupport
|
19
19
|
|
@@ -31,7 +31,7 @@ API documentation is at:
|
|
31
31
|
|
32
32
|
* https://api.rubyonrails.org
|
33
33
|
|
34
|
-
Bug reports for the Ruby on Rails project can be filed here:
|
34
|
+
Bug reports for the Ruby on \Rails project can be filed here:
|
35
35
|
|
36
36
|
* https://github.com/rails/rails/issues
|
37
37
|
|
@@ -1,9 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ActiveSupport
|
4
|
+
# = Actionable Errors
|
5
|
+
#
|
4
6
|
# Actionable errors lets you define actions to resolve an error.
|
5
7
|
#
|
6
|
-
# To make an error actionable, include the
|
8
|
+
# To make an error actionable, include the +ActiveSupport::ActionableError+
|
7
9
|
# module and invoke the +action+ class macro to define the action. An action
|
8
10
|
# needs a name and a block to execute.
|
9
11
|
module ActionableError
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ActiveSupport
|
4
|
+
# = \Array Inquirer
|
5
|
+
#
|
4
6
|
# Wrapping an array in an +ArrayInquirer+ gives a friendlier way to check
|
5
7
|
# its string-like contents:
|
6
8
|
#
|
@@ -37,7 +39,7 @@ module ActiveSupport
|
|
37
39
|
name.end_with?("?") || super
|
38
40
|
end
|
39
41
|
|
40
|
-
def method_missing(name,
|
42
|
+
def method_missing(name, ...)
|
41
43
|
if name.end_with?("?")
|
42
44
|
any?(name[0..-2])
|
43
45
|
else
|