activesupport 5.2.3.rc1 → 6.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activesupport might be problematic. Click here for more details.

Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +183 -469
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +1 -1
  5. data/lib/active_support.rb +1 -1
  6. data/lib/active_support/backtrace_cleaner.rb +23 -0
  7. data/lib/active_support/cache.rb +40 -18
  8. data/lib/active_support/cache/file_store.rb +19 -12
  9. data/lib/active_support/cache/mem_cache_store.rb +5 -0
  10. data/lib/active_support/cache/memory_store.rb +5 -0
  11. data/lib/active_support/cache/null_store.rb +5 -0
  12. data/lib/active_support/cache/redis_cache_store.rb +28 -4
  13. data/lib/active_support/callbacks.rb +16 -5
  14. data/lib/active_support/configurable.rb +4 -8
  15. data/lib/active_support/core_ext/array.rb +1 -1
  16. data/lib/active_support/core_ext/array/extract.rb +21 -0
  17. data/lib/active_support/core_ext/array/prepend_and_append.rb +2 -6
  18. data/lib/active_support/core_ext/class/attribute.rb +1 -1
  19. data/lib/active_support/core_ext/class/subclasses.rb +1 -1
  20. data/lib/active_support/core_ext/date/calculations.rb +6 -5
  21. data/lib/active_support/core_ext/date_and_time/calculations.rb +24 -17
  22. data/lib/active_support/core_ext/date_time/calculations.rb +1 -1
  23. data/lib/active_support/core_ext/enumerable.rb +71 -67
  24. data/lib/active_support/core_ext/hash.rb +0 -2
  25. data/lib/active_support/core_ext/hash/compact.rb +2 -26
  26. data/lib/active_support/core_ext/hash/keys.rb +0 -29
  27. data/lib/active_support/core_ext/hash/slice.rb +3 -25
  28. data/lib/active_support/core_ext/hash/transform_values.rb +2 -29
  29. data/lib/active_support/core_ext/integer/multiple.rb +1 -1
  30. data/lib/active_support/core_ext/load_error.rb +1 -1
  31. data/lib/active_support/core_ext/module.rb +0 -1
  32. data/lib/active_support/core_ext/module/attribute_accessors.rb +2 -5
  33. data/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb +8 -14
  34. data/lib/active_support/core_ext/module/delegation.rb +27 -7
  35. data/lib/active_support/core_ext/module/introspection.rb +37 -13
  36. data/lib/active_support/core_ext/module/reachable.rb +1 -6
  37. data/lib/active_support/core_ext/module/redefine_method.rb +8 -17
  38. data/lib/active_support/core_ext/numeric.rb +0 -1
  39. data/lib/active_support/core_ext/numeric/conversions.rb +124 -128
  40. data/lib/active_support/core_ext/numeric/inquiry.rb +2 -25
  41. data/lib/active_support/core_ext/object/blank.rb +1 -2
  42. data/lib/active_support/core_ext/object/duplicable.rb +5 -2
  43. data/lib/active_support/core_ext/object/json.rb +1 -0
  44. data/lib/active_support/core_ext/object/try.rb +15 -7
  45. data/lib/active_support/core_ext/object/with_options.rb +1 -1
  46. data/lib/active_support/core_ext/range/compare_range.rb +1 -1
  47. data/lib/active_support/core_ext/range/conversions.rb +31 -29
  48. data/lib/active_support/core_ext/range/include_range.rb +6 -0
  49. data/lib/active_support/core_ext/regexp.rb +0 -4
  50. data/lib/active_support/core_ext/securerandom.rb +23 -3
  51. data/lib/active_support/core_ext/string/access.rb +8 -0
  52. data/lib/active_support/core_ext/string/filters.rb +41 -0
  53. data/lib/active_support/core_ext/string/multibyte.rb +4 -3
  54. data/lib/active_support/core_ext/string/output_safety.rb +16 -5
  55. data/lib/active_support/core_ext/string/strip.rb +3 -1
  56. data/lib/active_support/core_ext/uri.rb +1 -0
  57. data/lib/active_support/current_attributes.rb +2 -0
  58. data/lib/active_support/dependencies.rb +28 -11
  59. data/lib/active_support/deprecation.rb +1 -1
  60. data/lib/active_support/deprecation/behaviors.rb +1 -1
  61. data/lib/active_support/deprecation/method_wrappers.rb +4 -5
  62. data/lib/active_support/deprecation/proxy_wrappers.rb +0 -2
  63. data/lib/active_support/descendants_tracker.rb +6 -5
  64. data/lib/active_support/duration.rb +4 -2
  65. data/lib/active_support/duration/iso8601_parser.rb +2 -3
  66. data/lib/active_support/duration/iso8601_serializer.rb +3 -4
  67. data/lib/active_support/encrypted_configuration.rb +0 -4
  68. data/lib/active_support/evented_file_update_checker.rb +25 -7
  69. data/lib/active_support/execution_wrapper.rb +1 -0
  70. data/lib/active_support/gem_version.rb +4 -4
  71. data/lib/active_support/hash_with_indifferent_access.rb +16 -28
  72. data/lib/active_support/i18n.rb +1 -0
  73. data/lib/active_support/i18n_railtie.rb +8 -1
  74. data/lib/active_support/inflector/inflections.rb +1 -4
  75. data/lib/active_support/inflector/methods.rb +15 -27
  76. data/lib/active_support/inflector/transliterate.rb +6 -6
  77. data/lib/active_support/json/decoding.rb +23 -23
  78. data/lib/active_support/json/encoding.rb +6 -2
  79. data/lib/active_support/key_generator.rb +0 -32
  80. data/lib/active_support/lazy_load_hooks.rb +5 -1
  81. data/lib/active_support/locale/en.rb +31 -0
  82. data/lib/active_support/log_subscriber.rb +31 -8
  83. data/lib/active_support/logger.rb +0 -15
  84. data/lib/active_support/logger_silence.rb +28 -12
  85. data/lib/active_support/logger_thread_safe_level.rb +26 -4
  86. data/lib/active_support/message_encryptor.rb +2 -4
  87. data/lib/active_support/message_verifier.rb +2 -2
  88. data/lib/active_support/multibyte/chars.rb +29 -48
  89. data/lib/active_support/multibyte/unicode.rb +44 -281
  90. data/lib/active_support/notifications.rb +32 -4
  91. data/lib/active_support/notifications/fanout.rb +40 -2
  92. data/lib/active_support/notifications/instrumenter.rb +73 -2
  93. data/lib/active_support/number_helper.rb +7 -0
  94. data/lib/active_support/number_helper/number_to_currency_converter.rb +2 -2
  95. data/lib/active_support/number_helper/number_to_delimited_converter.rb +3 -1
  96. data/lib/active_support/number_helper/number_to_human_converter.rb +3 -1
  97. data/lib/active_support/number_helper/number_to_human_size_converter.rb +3 -1
  98. data/lib/active_support/number_helper/number_to_percentage_converter.rb +3 -1
  99. data/lib/active_support/number_helper/number_to_phone_converter.rb +2 -0
  100. data/lib/active_support/number_helper/number_to_rounded_converter.rb +5 -3
  101. data/lib/active_support/parameter_filter.rb +124 -0
  102. data/lib/active_support/rails.rb +0 -6
  103. data/lib/active_support/reloader.rb +4 -5
  104. data/lib/active_support/subscriber.rb +16 -26
  105. data/lib/active_support/tagged_logging.rb +13 -4
  106. data/lib/active_support/test_case.rb +91 -0
  107. data/lib/active_support/testing/assertions.rb +15 -1
  108. data/lib/active_support/testing/deprecation.rb +0 -1
  109. data/lib/active_support/testing/file_fixtures.rb +2 -0
  110. data/lib/active_support/testing/isolation.rb +2 -2
  111. data/lib/active_support/testing/method_call_assertions.rb +28 -1
  112. data/lib/active_support/testing/parallelization.rb +109 -0
  113. data/lib/active_support/testing/stream.rb +1 -1
  114. data/lib/active_support/testing/time_helpers.rb +7 -7
  115. data/lib/active_support/time_with_zone.rb +15 -5
  116. data/lib/active_support/values/time_zone.rb +12 -7
  117. data/lib/active_support/xml_mini.rb +2 -9
  118. data/lib/active_support/xml_mini/jdom.rb +2 -2
  119. data/lib/active_support/xml_mini/libxml.rb +2 -2
  120. data/lib/active_support/xml_mini/libxmlsax.rb +4 -4
  121. data/lib/active_support/xml_mini/nokogiri.rb +2 -2
  122. data/lib/active_support/xml_mini/nokogirisax.rb +3 -3
  123. data/lib/active_support/xml_mini/rexml.rb +2 -2
  124. metadata +9 -6
  125. data/lib/active_support/values/unicode_tables.dat +0 -0
@@ -2,7 +2,6 @@
2
2
 
3
3
  require "tzinfo"
4
4
  require "concurrent/map"
5
- require "active_support/core_ext/object/blank"
6
5
 
7
6
  module ActiveSupport
8
7
  # The TimeZone class serves as a wrapper around TZInfo::Timezone instances.
@@ -183,8 +182,9 @@ module ActiveSupport
183
182
  "Samoa" => "Pacific/Apia"
184
183
  }
185
184
 
186
- UTC_OFFSET_WITH_COLON = "%s%02d:%02d"
187
- UTC_OFFSET_WITHOUT_COLON = UTC_OFFSET_WITH_COLON.tr(":", "")
185
+ UTC_OFFSET_WITH_COLON = "%s%02d:%02d" # :nodoc:
186
+ UTC_OFFSET_WITHOUT_COLON = UTC_OFFSET_WITH_COLON.tr(":", "") # :nodoc:
187
+ private_constant :UTC_OFFSET_WITH_COLON, :UTC_OFFSET_WITHOUT_COLON
188
188
 
189
189
  @lazy_zones_map = Concurrent::Map.new
190
190
  @country_zones = Concurrent::Map.new
@@ -266,7 +266,7 @@ module ActiveSupport
266
266
  private
267
267
  def load_country_zones(code)
268
268
  country = TZInfo::Country.get(code)
269
- country.zone_identifiers.map do |tz_id|
269
+ country.zone_identifiers.flat_map do |tz_id|
270
270
  if MAPPING.value?(tz_id)
271
271
  MAPPING.inject([]) do |memo, (key, value)|
272
272
  memo << self[key] if value == tz_id
@@ -275,7 +275,7 @@ module ActiveSupport
275
275
  else
276
276
  create(tz_id, nil, TZInfo::Timezone.new(tz_id))
277
277
  end
278
- end.flatten(1).sort!
278
+ end.sort!
279
279
  end
280
280
 
281
281
  def zones_map
@@ -355,8 +355,13 @@ module ActiveSupport
355
355
  # Time.zone = 'Hawaii' # => "Hawaii"
356
356
  # Time.utc(2000).to_f # => 946684800.0
357
357
  # Time.zone.at(946684800.0) # => Fri, 31 Dec 1999 14:00:00 HST -10:00
358
- def at(secs)
359
- Time.at(secs).utc.in_time_zone(self)
358
+ #
359
+ # A second argument can be supplied to specify sub-second precision.
360
+ #
361
+ # Time.zone = 'Hawaii' # => "Hawaii"
362
+ # Time.at(946684800, 123456.789).nsec # => 123456789
363
+ def at(*args)
364
+ Time.at(*args).utc.in_time_zone(self)
360
365
  end
361
366
 
362
367
  # Method for creating new ActiveSupport::TimeWithZone instance in time zone
@@ -3,6 +3,7 @@
3
3
  require "time"
4
4
  require "base64"
5
5
  require "bigdecimal"
6
+ require "bigdecimal/util"
6
7
  require "active_support/core_ext/module/delegation"
7
8
  require "active_support/core_ext/string/inflections"
8
9
  require "active_support/core_ext/date_time/calculations"
@@ -48,10 +49,6 @@ module ActiveSupport
48
49
  "Array" => "array",
49
50
  "Hash" => "hash"
50
51
  }
51
-
52
- # No need to map these on Ruby 2.4+
53
- TYPE_NAMES["Fixnum"] = "integer" unless 0.class == Integer
54
- TYPE_NAMES["Bignum"] = "integer" unless 0.class == Integer
55
52
  end
56
53
 
57
54
  FORMATTING = {
@@ -72,11 +69,7 @@ module ActiveSupport
72
69
  "float" => Proc.new { |float| float.to_f },
73
70
  "decimal" => Proc.new do |number|
74
71
  if String === number
75
- begin
76
- BigDecimal(number)
77
- rescue ArgumentError
78
- BigDecimal(number.to_f.to_s)
79
- end
72
+ number.to_d
80
73
  else
81
74
  BigDecimal(number)
82
75
  end
@@ -18,7 +18,7 @@ module ActiveSupport
18
18
  module XmlMini_JDOM #:nodoc:
19
19
  extend self
20
20
 
21
- CONTENT_KEY = "__content__".freeze
21
+ CONTENT_KEY = "__content__"
22
22
 
23
23
  NODE_TYPE_NAMES = %w{ATTRIBUTE_NODE CDATA_SECTION_NODE COMMENT_NODE DOCUMENT_FRAGMENT_NODE
24
24
  DOCUMENT_NODE DOCUMENT_TYPE_NODE ELEMENT_NODE ENTITY_NODE ENTITY_REFERENCE_NODE NOTATION_NODE
@@ -169,7 +169,7 @@ module ActiveSupport
169
169
  # element::
170
170
  # XML element to be checked.
171
171
  def empty_content?(element)
172
- text = "".dup
172
+ text = +""
173
173
  child_nodes = element.child_nodes
174
174
  (0...child_nodes.length).each do |i|
175
175
  item = child_nodes.item(i)
@@ -34,7 +34,7 @@ module LibXML #:nodoc:
34
34
  end
35
35
 
36
36
  module Node #:nodoc:
37
- CONTENT_ROOT = "__content__".freeze
37
+ CONTENT_ROOT = "__content__"
38
38
 
39
39
  # Convert XML document to hash.
40
40
  #
@@ -55,7 +55,7 @@ module LibXML #:nodoc:
55
55
  if c.element?
56
56
  c.to_hash(node_hash)
57
57
  elsif c.text? || c.cdata?
58
- node_hash[CONTENT_ROOT] ||= "".dup
58
+ node_hash[CONTENT_ROOT] ||= +""
59
59
  node_hash[CONTENT_ROOT] << c.content
60
60
  end
61
61
  end
@@ -13,8 +13,8 @@ module ActiveSupport
13
13
  class HashBuilder
14
14
  include LibXML::XML::SaxParser::Callbacks
15
15
 
16
- CONTENT_KEY = "__content__".freeze
17
- HASH_SIZE_KEY = "__hash_size__".freeze
16
+ CONTENT_KEY = "__content__"
17
+ HASH_SIZE_KEY = "__hash_size__"
18
18
 
19
19
  attr_reader :hash
20
20
 
@@ -23,7 +23,7 @@ module ActiveSupport
23
23
  end
24
24
 
25
25
  def on_start_document
26
- @hash = { CONTENT_KEY => "".dup }
26
+ @hash = { CONTENT_KEY => +"" }
27
27
  @hash_stack = [@hash]
28
28
  end
29
29
 
@@ -33,7 +33,7 @@ module ActiveSupport
33
33
  end
34
34
 
35
35
  def on_start_element(name, attrs = {})
36
- new_hash = { CONTENT_KEY => "".dup }.merge!(attrs)
36
+ new_hash = { CONTENT_KEY => +"" }.merge!(attrs)
37
37
  new_hash[HASH_SIZE_KEY] = new_hash.size + 1
38
38
 
39
39
  case current_hash[name]
@@ -38,7 +38,7 @@ module ActiveSupport
38
38
  end
39
39
 
40
40
  module Node #:nodoc:
41
- CONTENT_ROOT = "__content__".freeze
41
+ CONTENT_ROOT = "__content__"
42
42
 
43
43
  # Convert XML document to hash.
44
44
  #
@@ -59,7 +59,7 @@ module ActiveSupport
59
59
  if c.element?
60
60
  c.to_hash(node_hash)
61
61
  elsif c.text? || c.cdata?
62
- node_hash[CONTENT_ROOT] ||= "".dup
62
+ node_hash[CONTENT_ROOT] ||= +""
63
63
  node_hash[CONTENT_ROOT] << c.content
64
64
  end
65
65
  end
@@ -16,8 +16,8 @@ module ActiveSupport
16
16
  # Class that will build the hash while the XML document
17
17
  # is being parsed using SAX events.
18
18
  class HashBuilder < Nokogiri::XML::SAX::Document
19
- CONTENT_KEY = "__content__".freeze
20
- HASH_SIZE_KEY = "__hash_size__".freeze
19
+ CONTENT_KEY = "__content__"
20
+ HASH_SIZE_KEY = "__hash_size__"
21
21
 
22
22
  attr_reader :hash
23
23
 
@@ -39,7 +39,7 @@ module ActiveSupport
39
39
  end
40
40
 
41
41
  def start_element(name, attrs = [])
42
- new_hash = { CONTENT_KEY => "".dup }.merge!(Hash[attrs])
42
+ new_hash = { CONTENT_KEY => +"" }.merge!(Hash[attrs])
43
43
  new_hash[HASH_SIZE_KEY] = new_hash.size + 1
44
44
 
45
45
  case current_hash[name]
@@ -8,7 +8,7 @@ module ActiveSupport
8
8
  module XmlMini_REXML #:nodoc:
9
9
  extend self
10
10
 
11
- CONTENT_KEY = "__content__".freeze
11
+ CONTENT_KEY = "__content__"
12
12
 
13
13
  # Parse an XML Document string or IO into a simple hash.
14
14
  #
@@ -76,7 +76,7 @@ module ActiveSupport
76
76
  hash
77
77
  else
78
78
  # must use value to prevent double-escaping
79
- texts = "".dup
79
+ texts = +""
80
80
  element.texts.each { |t| texts << t.value }
81
81
  merge!(hash, CONTENT_KEY, texts)
82
82
  end
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: 5.2.3.rc1
4
+ version: 6.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-22 00:00:00.000000000 Z
11
+ date: 2019-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -112,6 +112,7 @@ files:
112
112
  - lib/active_support/core_ext/array.rb
113
113
  - lib/active_support/core_ext/array/access.rb
114
114
  - lib/active_support/core_ext/array/conversions.rb
115
+ - lib/active_support/core_ext/array/extract.rb
115
116
  - lib/active_support/core_ext/array/extract_options.rb
116
117
  - lib/active_support/core_ext/array/grouping.rb
117
118
  - lib/active_support/core_ext/array/inquiry.rb
@@ -263,6 +264,7 @@ files:
263
264
  - lib/active_support/json/encoding.rb
264
265
  - lib/active_support/key_generator.rb
265
266
  - lib/active_support/lazy_load_hooks.rb
267
+ - lib/active_support/locale/en.rb
266
268
  - lib/active_support/locale/en.yml
267
269
  - lib/active_support/log_subscriber.rb
268
270
  - lib/active_support/log_subscriber/test_helper.rb
@@ -293,6 +295,7 @@ files:
293
295
  - lib/active_support/option_merger.rb
294
296
  - lib/active_support/ordered_hash.rb
295
297
  - lib/active_support/ordered_options.rb
298
+ - lib/active_support/parameter_filter.rb
296
299
  - lib/active_support/per_thread_registry.rb
297
300
  - lib/active_support/proxy_object.rb
298
301
  - lib/active_support/rails.rb
@@ -312,6 +315,7 @@ files:
312
315
  - lib/active_support/testing/file_fixtures.rb
313
316
  - lib/active_support/testing/isolation.rb
314
317
  - lib/active_support/testing/method_call_assertions.rb
318
+ - lib/active_support/testing/parallelization.rb
315
319
  - lib/active_support/testing/setup_and_teardown.rb
316
320
  - lib/active_support/testing/stream.rb
317
321
  - lib/active_support/testing/tagged_logging.rb
@@ -319,7 +323,6 @@ files:
319
323
  - lib/active_support/time.rb
320
324
  - lib/active_support/time_with_zone.rb
321
325
  - lib/active_support/values/time_zone.rb
322
- - lib/active_support/values/unicode_tables.dat
323
326
  - lib/active_support/version.rb
324
327
  - lib/active_support/xml_mini.rb
325
328
  - lib/active_support/xml_mini/jdom.rb
@@ -332,8 +335,8 @@ homepage: http://rubyonrails.org
332
335
  licenses:
333
336
  - MIT
334
337
  metadata:
335
- source_code_uri: https://github.com/rails/rails/tree/v5.2.3.rc1/activesupport
336
- changelog_uri: https://github.com/rails/rails/blob/v5.2.3.rc1/activesupport/CHANGELOG.md
338
+ source_code_uri: https://github.com/rails/rails/tree/v6.0.0.beta1/activesupport
339
+ changelog_uri: https://github.com/rails/rails/blob/v6.0.0.beta1/activesupport/CHANGELOG.md
337
340
  post_install_message:
338
341
  rdoc_options:
339
342
  - "--encoding"
@@ -344,7 +347,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
344
347
  requirements:
345
348
  - - ">="
346
349
  - !ruby/object:Gem::Version
347
- version: 2.2.2
350
+ version: 2.5.0
348
351
  required_rubygems_version: !ruby/object:Gem::Requirement
349
352
  requirements:
350
353
  - - ">"