activesupport 7.1.3 → 7.1.5.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 +102 -0
- data/lib/active_support/backtrace_cleaner.rb +5 -0
- data/lib/active_support/broadcast_logger.rb +15 -14
- data/lib/active_support/cache.rb +2 -1
- data/lib/active_support/code_generator.rb +15 -10
- data/lib/active_support/core_ext/module/delegation.rb +41 -26
- data/lib/active_support/core_ext/object/duplicable.rb +24 -15
- data/lib/active_support/core_ext/object/json.rb +5 -3
- data/lib/active_support/deprecation/reporting.rb +2 -2
- data/lib/active_support/gem_version.rb +2 -2
- data/lib/active_support/html_safe_translation.rb +16 -6
- data/lib/active_support/json/encoding.rb +1 -1
- data/lib/active_support/log_subscriber.rb +1 -0
- data/lib/active_support/messages/codec.rb +1 -1
- data/lib/active_support/notifications/instrumenter.rb +11 -3
- data/lib/active_support/railtie.rb +3 -3
- data/lib/active_support/syntax_error_proxy.rb +1 -11
- data/lib/active_support/tagged_logging.rb +4 -0
- data/lib/active_support/testing/setup_and_teardown.rb +2 -0
- data/lib/active_support/values/time_zone.rb +9 -0
- data/lib/active_support.rb +1 -1
- metadata +51 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fff21dce85b122849485b60d18133395aff9f17f4b04f0ed2cdd0c6e3a5ac89a
|
4
|
+
data.tar.gz: f9402bb99435697896e3f5ed40b0b3586d14657df658854386503d7d77b3a523
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17025021f271bbc388d6aea3d141da1069e137b13202443723aad3aa363c14366c6dc134f6f94de92a5f2afaeae737db6e105896e7bf8abf7e150c97235946ba
|
7
|
+
data.tar.gz: 6b1eb2037cab8e9a59051cd5181ac5aa7662d205cf096dbd64a39ddcd2844e2e3881471e4c36d325e0db000d2bc2073b771ccecd9c390b7f186c472890a6bcf7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,105 @@
|
|
1
|
+
## Rails 7.1.5.1 (December 10, 2024) ##
|
2
|
+
|
3
|
+
* No changes.
|
4
|
+
|
5
|
+
|
6
|
+
## Rails 7.1.5 (October 30, 2024) ##
|
7
|
+
|
8
|
+
* No changes.
|
9
|
+
|
10
|
+
|
11
|
+
## Rails 7.1.4.2 (October 23, 2024) ##
|
12
|
+
|
13
|
+
* No changes.
|
14
|
+
|
15
|
+
|
16
|
+
## Rails 7.1.4.1 (October 15, 2024) ##
|
17
|
+
|
18
|
+
* No changes.
|
19
|
+
|
20
|
+
|
21
|
+
## Rails 7.1.4 (August 22, 2024) ##
|
22
|
+
|
23
|
+
* Improve compatibility for `ActiveSupport::BroadcastLogger`.
|
24
|
+
|
25
|
+
*Máximo Mussini*
|
26
|
+
|
27
|
+
* Pass options along to write_entry in handle_expired_entry method.
|
28
|
+
|
29
|
+
*Graham Cooper*
|
30
|
+
|
31
|
+
* Fix Active Support configurations deprecations.
|
32
|
+
|
33
|
+
*fatkodima*
|
34
|
+
|
35
|
+
* Fix teardown callbacks.
|
36
|
+
|
37
|
+
*Tristan Starck*
|
38
|
+
|
39
|
+
* `BacktraceCleaner` silence core internal methods by default.
|
40
|
+
|
41
|
+
*Jean Boussier*
|
42
|
+
|
43
|
+
* Fix `delegate_missing_to allow_nil: true` when called with implict self
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
class Person
|
47
|
+
delegate_missing_to :address, allow_nil: true
|
48
|
+
|
49
|
+
def address
|
50
|
+
nil
|
51
|
+
end
|
52
|
+
|
53
|
+
def berliner?
|
54
|
+
city == "Berlin"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
Person.new.city # => nil
|
59
|
+
Person.new.berliner? # undefined local variable or method `city' for an instance of Person (NameError)
|
60
|
+
```
|
61
|
+
|
62
|
+
*Jean Boussier*
|
63
|
+
|
64
|
+
* Work around a Ruby bug that can cause a VM crash.
|
65
|
+
|
66
|
+
This would happen if using `TaggerLogger` with a Proc
|
67
|
+
formatter on which you called `object_id`.
|
68
|
+
|
69
|
+
```
|
70
|
+
[BUG] Object ID seen, but not in mapping table: proc
|
71
|
+
```
|
72
|
+
|
73
|
+
*Jean Boussier*
|
74
|
+
|
75
|
+
* Fix `ActiveSupport::Notifications.publish_event` to preserve units.
|
76
|
+
|
77
|
+
This solves the incorrect reporting of time spent running Active Record
|
78
|
+
asynchronous queries (by a factor `1000`).
|
79
|
+
|
80
|
+
*Jean Boussier*
|
81
|
+
|
82
|
+
|
83
|
+
## Rails 7.1.3.4 (June 04, 2024) ##
|
84
|
+
|
85
|
+
* No changes.
|
86
|
+
|
87
|
+
|
88
|
+
## Rails 7.1.3.3 (May 16, 2024) ##
|
89
|
+
|
90
|
+
* No changes.
|
91
|
+
|
92
|
+
|
93
|
+
## Rails 7.1.3.2 (February 21, 2024) ##
|
94
|
+
|
95
|
+
* No changes.
|
96
|
+
|
97
|
+
|
98
|
+
## Rails 7.1.3.1 (February 21, 2024) ##
|
99
|
+
|
100
|
+
* No changes.
|
101
|
+
|
102
|
+
|
1
103
|
## Rails 7.1.3 (January 16, 2024) ##
|
2
104
|
|
3
105
|
* Handle nil `backtrace_locations` in `ActiveSupport::SyntaxErrorProxy`.
|
@@ -33,6 +33,7 @@ module ActiveSupport
|
|
33
33
|
class BacktraceCleaner
|
34
34
|
def initialize
|
35
35
|
@filters, @silencers = [], []
|
36
|
+
add_core_silencer
|
36
37
|
add_gem_filter
|
37
38
|
add_gem_silencer
|
38
39
|
add_stdlib_silencer
|
@@ -116,6 +117,10 @@ module ActiveSupport
|
|
116
117
|
add_filter { |line| line.sub(gems_regexp, gems_result) }
|
117
118
|
end
|
118
119
|
|
120
|
+
def add_core_silencer
|
121
|
+
add_silencer { |line| line.include?("<internal:") }
|
122
|
+
end
|
123
|
+
|
119
124
|
def add_gem_silencer
|
120
125
|
add_silencer { |line| FORMATTED_GEMS_PATTERN.match?(line) }
|
121
126
|
end
|
@@ -113,33 +113,33 @@ module ActiveSupport
|
|
113
113
|
dispatch { |logger| logger.<<(message) }
|
114
114
|
end
|
115
115
|
|
116
|
-
def add(
|
117
|
-
dispatch { |logger| logger.add(
|
116
|
+
def add(...)
|
117
|
+
dispatch { |logger| logger.add(...) }
|
118
118
|
end
|
119
119
|
alias_method :log, :add
|
120
120
|
|
121
|
-
def debug(
|
122
|
-
dispatch { |logger| logger.debug(
|
121
|
+
def debug(...)
|
122
|
+
dispatch { |logger| logger.debug(...) }
|
123
123
|
end
|
124
124
|
|
125
|
-
def info(
|
126
|
-
dispatch { |logger| logger.info(
|
125
|
+
def info(...)
|
126
|
+
dispatch { |logger| logger.info(...) }
|
127
127
|
end
|
128
128
|
|
129
|
-
def warn(
|
130
|
-
dispatch { |logger| logger.warn(
|
129
|
+
def warn(...)
|
130
|
+
dispatch { |logger| logger.warn(...) }
|
131
131
|
end
|
132
132
|
|
133
|
-
def error(
|
134
|
-
dispatch { |logger| logger.error(
|
133
|
+
def error(...)
|
134
|
+
dispatch { |logger| logger.error(...) }
|
135
135
|
end
|
136
136
|
|
137
|
-
def fatal(
|
138
|
-
dispatch { |logger| logger.fatal(
|
137
|
+
def fatal(...)
|
138
|
+
dispatch { |logger| logger.fatal(...) }
|
139
139
|
end
|
140
140
|
|
141
|
-
def unknown(
|
142
|
-
dispatch { |logger| logger.unknown(
|
141
|
+
def unknown(...)
|
142
|
+
dispatch { |logger| logger.unknown(...) }
|
143
143
|
end
|
144
144
|
|
145
145
|
def formatter=(formatter)
|
@@ -229,6 +229,7 @@ module ActiveSupport
|
|
229
229
|
private
|
230
230
|
def dispatch(&block)
|
231
231
|
@broadcasts.each { |logger| block.call(logger) }
|
232
|
+
true
|
232
233
|
end
|
233
234
|
|
234
235
|
def method_missing(name, *args, **kwargs, &block)
|
data/lib/active_support/cache.rb
CHANGED
@@ -1038,7 +1038,8 @@ module ActiveSupport
|
|
1038
1038
|
# When an entry has a positive :race_condition_ttl defined, put the stale entry back into the cache
|
1039
1039
|
# for a brief period while the entry is being recalculated.
|
1040
1040
|
entry.expires_at = Time.now.to_f + race_ttl
|
1041
|
-
|
1041
|
+
options[:expires_in] = race_ttl * 2
|
1042
|
+
write_entry(key, entry, **options)
|
1042
1043
|
else
|
1043
1044
|
delete_entry(key, **options)
|
1044
1045
|
end
|
@@ -9,16 +9,19 @@ module ActiveSupport
|
|
9
9
|
@cache = METHOD_CACHES[namespace]
|
10
10
|
@sources = []
|
11
11
|
@methods = {}
|
12
|
+
@canonical_methods = {}
|
12
13
|
end
|
13
14
|
|
14
|
-
def define_cached_method(
|
15
|
-
|
16
|
-
as = as.to_sym
|
17
|
-
|
18
|
-
|
15
|
+
def define_cached_method(canonical_name, as: nil)
|
16
|
+
canonical_name = canonical_name.to_sym
|
17
|
+
as = (as || canonical_name).to_sym
|
18
|
+
|
19
|
+
@methods.fetch(as) do
|
20
|
+
unless @cache.method_defined?(canonical_name) || @canonical_methods[canonical_name]
|
19
21
|
yield @sources
|
20
22
|
end
|
21
|
-
@
|
23
|
+
@canonical_methods[canonical_name] = true
|
24
|
+
@methods[as] = canonical_name
|
22
25
|
end
|
23
26
|
end
|
24
27
|
|
@@ -26,8 +29,10 @@ module ActiveSupport
|
|
26
29
|
unless @sources.empty?
|
27
30
|
@cache.module_eval("# frozen_string_literal: true\n" + @sources.join(";"), path, line)
|
28
31
|
end
|
29
|
-
@
|
30
|
-
|
32
|
+
@canonical_methods.clear
|
33
|
+
|
34
|
+
@methods.each do |as, canonical_name|
|
35
|
+
owner.define_method(as, @cache.instance_method(canonical_name))
|
31
36
|
end
|
32
37
|
end
|
33
38
|
end
|
@@ -52,8 +57,8 @@ module ActiveSupport
|
|
52
57
|
@namespaces = Hash.new { |h, k| h[k] = MethodSet.new(k) }
|
53
58
|
end
|
54
59
|
|
55
|
-
def define_cached_method(
|
56
|
-
@namespaces[namespace].define_cached_method(
|
60
|
+
def define_cached_method(canonical_name, namespace:, as: nil, &block)
|
61
|
+
@namespaces[namespace].define_cached_method(canonical_name, as: as, &block)
|
57
62
|
end
|
58
63
|
|
59
64
|
def execute
|
@@ -317,37 +317,52 @@ class Module
|
|
317
317
|
# of <tt>object</tt> add or remove instance variables.
|
318
318
|
def delegate_missing_to(target, allow_nil: nil)
|
319
319
|
target = target.to_s
|
320
|
-
target = "self.#{target}" if DELEGATION_RESERVED_METHOD_NAMES.include?(target)
|
320
|
+
target = "self.#{target}" if DELEGATION_RESERVED_METHOD_NAMES.include?(target) || target == "__target"
|
321
321
|
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
322
|
+
if allow_nil
|
323
|
+
module_eval <<~RUBY, __FILE__, __LINE__ + 1
|
324
|
+
def respond_to_missing?(name, include_private = false)
|
325
|
+
# It may look like an oversight, but we deliberately do not pass
|
326
|
+
# +include_private+, because they do not get delegated.
|
326
327
|
|
327
|
-
|
328
|
-
|
329
|
-
|
328
|
+
return false if name == :marshal_dump || name == :_dump
|
329
|
+
#{target}.respond_to?(name) || super
|
330
|
+
end
|
330
331
|
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
332
|
+
def method_missing(method, *args, &block)
|
333
|
+
__target = #{target}
|
334
|
+
if __target.nil? && !nil.respond_to?(method)
|
335
|
+
nil
|
336
|
+
elsif __target.respond_to?(method)
|
337
|
+
__target.public_send(method, *args, &block)
|
338
|
+
else
|
336
339
|
super
|
337
|
-
rescue NoMethodError
|
338
|
-
if #{target}.nil?
|
339
|
-
if #{allow_nil == true}
|
340
|
-
nil
|
341
|
-
else
|
342
|
-
raise DelegationError, "\#{method} delegated to #{target}, but #{target} is nil"
|
343
|
-
end
|
344
|
-
else
|
345
|
-
raise
|
346
|
-
end
|
347
340
|
end
|
348
341
|
end
|
349
|
-
|
350
|
-
|
351
|
-
|
342
|
+
ruby2_keywords(:method_missing)
|
343
|
+
RUBY
|
344
|
+
else
|
345
|
+
module_eval <<~RUBY, __FILE__, __LINE__ + 1
|
346
|
+
def respond_to_missing?(name, include_private = false)
|
347
|
+
# It may look like an oversight, but we deliberately do not pass
|
348
|
+
# +include_private+, because they do not get delegated.
|
349
|
+
|
350
|
+
return false if name == :marshal_dump || name == :_dump
|
351
|
+
#{target}.respond_to?(name) || super
|
352
|
+
end
|
353
|
+
|
354
|
+
def method_missing(method, *args, &block)
|
355
|
+
__target = #{target}
|
356
|
+
if __target.nil? && !nil.respond_to?(method)
|
357
|
+
raise DelegationError, "\#{method} delegated to #{target}, but #{target} is nil"
|
358
|
+
elsif __target.respond_to?(method)
|
359
|
+
__target.public_send(method, *args, &block)
|
360
|
+
else
|
361
|
+
super
|
362
|
+
end
|
363
|
+
end
|
364
|
+
ruby2_keywords(:method_missing)
|
365
|
+
RUBY
|
366
|
+
end
|
352
367
|
end
|
353
368
|
end
|
@@ -28,23 +28,32 @@ class Object
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
def duplicable?
|
37
|
-
false
|
38
|
-
end
|
31
|
+
methods_are_duplicable = begin
|
32
|
+
Object.instance_method(:duplicable?).dup
|
33
|
+
true
|
34
|
+
rescue TypeError
|
35
|
+
false
|
39
36
|
end
|
40
37
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
38
|
+
unless methods_are_duplicable
|
39
|
+
class Method
|
40
|
+
# Methods are not duplicable:
|
41
|
+
#
|
42
|
+
# method(:puts).duplicable? # => false
|
43
|
+
# method(:puts).dup # => TypeError: allocator undefined for Method
|
44
|
+
def duplicable?
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class UnboundMethod
|
50
|
+
# Unbound methods are not duplicable:
|
51
|
+
#
|
52
|
+
# method(:puts).unbind.duplicable? # => false
|
53
|
+
# method(:puts).unbind.dup # => TypeError: allocator undefined for UnboundMethod
|
54
|
+
def duplicable?
|
55
|
+
false
|
56
|
+
end
|
48
57
|
end
|
49
58
|
end
|
50
59
|
|
@@ -233,9 +233,11 @@ class Pathname # :nodoc:
|
|
233
233
|
end
|
234
234
|
end
|
235
235
|
|
236
|
-
|
237
|
-
|
238
|
-
|
236
|
+
unless IPAddr.method_defined?(:as_json, false)
|
237
|
+
class IPAddr # :nodoc:
|
238
|
+
def as_json(options = nil)
|
239
|
+
to_s
|
240
|
+
end
|
239
241
|
end
|
240
242
|
end
|
241
243
|
|
@@ -163,8 +163,8 @@ module ActiveSupport
|
|
163
163
|
end
|
164
164
|
end
|
165
165
|
|
166
|
-
RAILS_GEM_ROOT = File.expand_path("../../../..", __dir__) + "/"
|
167
|
-
LIB_DIR = RbConfig::CONFIG["libdir"]
|
166
|
+
RAILS_GEM_ROOT = File.expand_path("../../../..", __dir__) + "/" # :nodoc:
|
167
|
+
LIB_DIR = RbConfig::CONFIG["libdir"] # :nodoc:
|
168
168
|
|
169
169
|
def ignored_callstack?(path)
|
170
170
|
path.start_with?(RAILS_GEM_ROOT, LIB_DIR)
|
@@ -7,18 +7,28 @@ module ActiveSupport
|
|
7
7
|
def translate(key, **options)
|
8
8
|
if html_safe_translation_key?(key)
|
9
9
|
html_safe_options = html_escape_translation_options(options)
|
10
|
-
|
11
|
-
|
10
|
+
|
11
|
+
exception = false
|
12
|
+
exception_handler = ->(*args) do
|
13
|
+
exception = true
|
14
|
+
I18n.exception_handler.call(*args)
|
15
|
+
end
|
16
|
+
translation = I18n.translate(key, **html_safe_options, exception_handler: exception_handler)
|
17
|
+
if exception
|
18
|
+
translation
|
19
|
+
else
|
20
|
+
html_safe_translation(translation)
|
21
|
+
end
|
12
22
|
else
|
13
23
|
I18n.translate(key, **options)
|
14
24
|
end
|
15
25
|
end
|
16
26
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
27
|
+
def html_safe_translation_key?(key)
|
28
|
+
/(?:_|\b)html\z/.match?(key)
|
29
|
+
end
|
21
30
|
|
31
|
+
private
|
22
32
|
def html_escape_translation_options(options)
|
23
33
|
options.each do |name, value|
|
24
34
|
unless i18n_option?(name) || (name == :count && value.is_a?(Numeric))
|
@@ -28,7 +28,7 @@ module ActiveSupport
|
|
28
28
|
|
29
29
|
def decode(encoded, url_safe: @url_safe)
|
30
30
|
url_safe ? ::Base64.urlsafe_decode64(encoded) : ::Base64.strict_decode64(encoded)
|
31
|
-
rescue
|
31
|
+
rescue StandardError => error
|
32
32
|
throw :invalid_message_format, error
|
33
33
|
end
|
34
34
|
|
@@ -104,7 +104,7 @@ module ActiveSupport
|
|
104
104
|
end
|
105
105
|
|
106
106
|
class Event
|
107
|
-
attr_reader :name, :
|
107
|
+
attr_reader :name, :transaction_id
|
108
108
|
attr_accessor :payload
|
109
109
|
|
110
110
|
def initialize(name, start, ending, transaction_id, payload)
|
@@ -119,7 +119,15 @@ module ActiveSupport
|
|
119
119
|
@allocation_count_finish = 0
|
120
120
|
end
|
121
121
|
|
122
|
-
def
|
122
|
+
def time
|
123
|
+
@time / 1000.0 if @time
|
124
|
+
end
|
125
|
+
|
126
|
+
def end
|
127
|
+
@end / 1000.0 if @end
|
128
|
+
end
|
129
|
+
|
130
|
+
def record # :nodoc:
|
123
131
|
start!
|
124
132
|
begin
|
125
133
|
yield payload if block_given?
|
@@ -195,7 +203,7 @@ module ActiveSupport
|
|
195
203
|
#
|
196
204
|
# @event.duration # => 1000.138
|
197
205
|
def duration
|
198
|
-
|
206
|
+
@end - @time
|
199
207
|
end
|
200
208
|
|
201
209
|
private
|
@@ -117,11 +117,11 @@ module ActiveSupport
|
|
117
117
|
|
118
118
|
initializer "active_support.set_configs" do |app|
|
119
119
|
app.config.active_support.each do |k, v|
|
120
|
-
if k ==
|
120
|
+
if k == :disable_to_s_conversion
|
121
121
|
ActiveSupport.deprecator.warn("config.active_support.disable_to_s_conversion is deprecated and will be removed in Rails 7.2.")
|
122
|
-
elsif k ==
|
122
|
+
elsif k == :remove_deprecated_time_with_zone_name
|
123
123
|
ActiveSupport.deprecator.warn("config.active_support.remove_deprecated_time_with_zone_name is deprecated and will be removed in Rails 7.2.")
|
124
|
-
elsif k ==
|
124
|
+
elsif k == :use_rfc4122_namespaced_uuids
|
125
125
|
ActiveSupport.deprecator.warn("config.active_support.use_rfc4122_namespaced_uuids is deprecated and will be removed in Rails 7.2.")
|
126
126
|
else
|
127
127
|
k = "#{k}="
|
@@ -45,7 +45,7 @@ module ActiveSupport
|
|
45
45
|
|
46
46
|
private
|
47
47
|
def parse_message_for_trace
|
48
|
-
if
|
48
|
+
if __getobj__.to_s.start_with?("(eval")
|
49
49
|
# If the exception is coming from a call to eval, we need to keep
|
50
50
|
# the path of the file in which eval was called to ensure we can
|
51
51
|
# return the right source fragment to show the location of the
|
@@ -56,15 +56,5 @@ module ActiveSupport
|
|
56
56
|
__getobj__.to_s.split("\n")
|
57
57
|
end
|
58
58
|
end
|
59
|
-
|
60
|
-
if SyntaxError.method_defined?(:path) # Ruby 3.3+
|
61
|
-
def source_location_eval?
|
62
|
-
__getobj__.path.start_with?("(eval")
|
63
|
-
end
|
64
|
-
else # 3.2 and older versions of Ruby
|
65
|
-
def source_location_eval?
|
66
|
-
__getobj__.to_s.start_with?("(eval")
|
67
|
-
end
|
68
|
-
end
|
69
59
|
end
|
70
60
|
end
|
@@ -119,6 +119,10 @@ module ActiveSupport
|
|
119
119
|
|
120
120
|
if logger.formatter
|
121
121
|
logger.formatter = logger.formatter.clone
|
122
|
+
|
123
|
+
# Workaround for https://bugs.ruby-lang.org/issues/20250
|
124
|
+
# Can be removed when Ruby 3.4 is the least supported version.
|
125
|
+
logger.formatter.object_id if logger.formatter.is_a?(Proc)
|
122
126
|
else
|
123
127
|
# Ensure we set a default formatter so we aren't extending nil!
|
124
128
|
logger.formatter = ActiveSupport::Logger::SimpleFormatter.new
|
@@ -208,7 +208,9 @@ module ActiveSupport
|
|
208
208
|
TZInfo::Timezone.get(MAPPING[name] || name)
|
209
209
|
end
|
210
210
|
|
211
|
+
# :stopdoc:
|
211
212
|
alias_method :create, :new
|
213
|
+
# :startdoc:
|
212
214
|
|
213
215
|
# Returns a TimeZone instance with the given name, or +nil+ if no
|
214
216
|
# such TimeZone instance exists. (This exists to support the use of
|
@@ -296,15 +298,22 @@ module ActiveSupport
|
|
296
298
|
attr_reader :name
|
297
299
|
attr_reader :tzinfo
|
298
300
|
|
301
|
+
##
|
302
|
+
# :singleton-method: create
|
303
|
+
# :call-seq: create(name, utc_offset = nil, tzinfo = nil)
|
304
|
+
#
|
299
305
|
# Create a new TimeZone object with the given name and offset. The
|
300
306
|
# offset is the number of seconds that this time zone is offset from UTC
|
301
307
|
# (GMT). Seconds were chosen as the offset unit because that is the unit
|
302
308
|
# that Ruby uses to represent time zone offsets (see Time#utc_offset).
|
309
|
+
|
310
|
+
# :stopdoc:
|
303
311
|
def initialize(name, utc_offset = nil, tzinfo = nil)
|
304
312
|
@name = name
|
305
313
|
@utc_offset = utc_offset
|
306
314
|
@tzinfo = tzinfo || TimeZone.find_tzinfo(name)
|
307
315
|
end
|
316
|
+
# :startdoc:
|
308
317
|
|
309
318
|
# Returns the offset of this time zone from UTC in seconds.
|
310
319
|
def utc_offset
|
data/lib/active_support.rb
CHANGED
@@ -32,7 +32,7 @@ require "active_support/broadcast_logger"
|
|
32
32
|
require "active_support/lazy_load_hooks"
|
33
33
|
require "active_support/core_ext/date_and_time/compatibility"
|
34
34
|
|
35
|
-
# :include:
|
35
|
+
# :include: ../README.rdoc
|
36
36
|
module ActiveSupport
|
37
37
|
extend ActiveSupport::Autoload
|
38
38
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activesupport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.1.
|
4
|
+
version: 7.1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -148,6 +148,48 @@ dependencies:
|
|
148
148
|
- - ">="
|
149
149
|
- !ruby/object:Gem::Version
|
150
150
|
version: '0'
|
151
|
+
- !ruby/object:Gem::Dependency
|
152
|
+
name: logger
|
153
|
+
requirement: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 1.4.2
|
158
|
+
type: :runtime
|
159
|
+
prerelease: false
|
160
|
+
version_requirements: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - ">="
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: 1.4.2
|
165
|
+
- !ruby/object:Gem::Dependency
|
166
|
+
name: securerandom
|
167
|
+
requirement: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0.3'
|
172
|
+
type: :runtime
|
173
|
+
prerelease: false
|
174
|
+
version_requirements: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - ">="
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0.3'
|
179
|
+
- !ruby/object:Gem::Dependency
|
180
|
+
name: benchmark
|
181
|
+
requirement: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0.3'
|
186
|
+
type: :runtime
|
187
|
+
prerelease: false
|
188
|
+
version_requirements: !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '0.3'
|
151
193
|
description: A toolkit of support libraries and Ruby core extensions extracted from
|
152
194
|
the Rails framework. Rich support for multibyte strings, internationalization, time
|
153
195
|
zones, and testing.
|
@@ -446,12 +488,12 @@ licenses:
|
|
446
488
|
- MIT
|
447
489
|
metadata:
|
448
490
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
449
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.1.
|
450
|
-
documentation_uri: https://api.rubyonrails.org/v7.1.
|
491
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.1.5.1/activesupport/CHANGELOG.md
|
492
|
+
documentation_uri: https://api.rubyonrails.org/v7.1.5.1/
|
451
493
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
452
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.1.
|
494
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.1.5.1/activesupport
|
453
495
|
rubygems_mfa_required: 'true'
|
454
|
-
post_install_message:
|
496
|
+
post_install_message:
|
455
497
|
rdoc_options:
|
456
498
|
- "--encoding"
|
457
499
|
- UTF-8
|
@@ -468,8 +510,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
468
510
|
- !ruby/object:Gem::Version
|
469
511
|
version: '0'
|
470
512
|
requirements: []
|
471
|
-
rubygems_version: 3.
|
472
|
-
signing_key:
|
513
|
+
rubygems_version: 3.5.22
|
514
|
+
signing_key:
|
473
515
|
specification_version: 4
|
474
516
|
summary: A toolkit of support libraries and Ruby core extensions extracted from the
|
475
517
|
Rails framework.
|