| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This prevents duplication of code.
Prevent duplication of tests by moving them to `DateAndTimeBehavior`.
Related to #32185.
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Add `before?` and `after?` methods to date and time classes
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Equality comparisons between dates and times can take some extra time to
comprehend. I tend to think of a date or time as "before" or "after"
another date or time, but I naturally read `<` and `>` as "less than"
and "greater than." This change seeks to make date/time comparisons more
human readable.
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Fix Cache `read_multi` with local_cache bug, should returns raw value, not `ActiveSupport::Cache::Entry` instance.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
It should returns raw value, not instance of `ActiveSupport::Cache::Entry`.
|
| | | | | | | |
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | | |
since revision 62897 https://github.com/ruby/ruby/commit/234a30459cdae6aa7da6e28a1082d9c11f315696
|
| |/ / / /
|/| | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When upgrading to Rails 5.2 we're seeing
`ActiveSupport::Cache::Entry#compress` and
`ActiveSupport::Cache::Entry#should_compress?` as the highest usage of
our CPU. At least some part of this is coming from the fact that objects
are being marshaled multiple times. This memoizes the marshaled value to
eliminate half the problem.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Since `Redis#call` duck types as a Proc, we'd call `#call` on it,
thinking it's a Proc. Fixed by check for the Proc explicitly instead of
duck typing on `#call`.
References #32233
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We test the failing case we're trying to patch; only if it throws an
Exception do we patch.
Currently this will *always* throw, but upstream Ruby has patched this
bug: https://git.io/vAxKB
Signed-off-by: Ashe Connor <ashe@kivikakk.ee>
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
URI.unescape "extension" fails with Unicode input
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Previously, URI.enscape could handle Unicode input (without any actual
escaped characters), or input with escaped characters (but no actual
Unicode characters) - not both.
URI.unescape("\xe3\x83\x90") # => "バ"
URI.unescape("%E3%83%90") # => "バ"
URI.unescape("\xe3\x83\x90%E3%83%90") # =>
# Encoding::CompatibilityError
We need to let `gsub` handle this for us, and then force back to the
original encoding of the input. The result String will be mangled if
the percent-encoded characters don't conform to the encoding of the
String itself, but that goes without saying.
Signed-off-by: Ashe Connor <ashe@kivikakk.ee>
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We have a bunch of documentation in
lib/active_support/core_ext/object/json.rb which is currently appearing
as documentation for the top-level ActiveSupport module. We hide it
from rdoc here.
Signed-off-by: Ashe Connor <ashe@kivikakk.ee>
|
| |/ /
|/| |
| | |
| | |
| | | |
Now we always have a terminator, so we don't need to day the options
only make sense when the `:terminator` options is specified.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Convert the user to atheism by ditching the extra example that demonstrates
the same thing as date_of_birth.
Demonstrate the NoMethodError on date_of_birth first, then call age that
uses date_of_birth internally. Thus showing that accessing it publicly fails,
but using it internally succeeds.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Numeric#positive? and Numeric#negative? was added to Ruby since 2.3,
see https://github.com/ruby/ruby/blob/ruby_2_3/NEWS
Rails 6 requires Ruby 2.4.1+ since https://github.com/rails/rails/pull/32034
|
| | |
| | |
| | |
| | |
| | | |
Ruby 2.4+ provides `Hash#compact` and `Hash#compact!` natively,
so `active_support/core_ext/hash/compact` is no longer necessary.
|
| | |
| | |
| | |
| | |
| | | |
https://bugs.ruby-lang.org/issues/12752
https://ruby-doc.org/core-2.4.0/String.html#method-i-unpack1
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
correct value
Remove extra comments `# Asking for private method` in activesupport/test/core_ext/module_test.rb
Improve docs of using `delegate` with `:private`
Update changelog of #31944
|
| | | |
|
| | |
| | |
| | | |
Since #32034, Rails 6 requires Ruby 2.4.1+.
|
|\ \ \
| | | |
| | | | |
Correct method documentation
|
| | | |
| | | |
| | | |
| | | |
| | | | |
The callback parameters need to reflect changes after
https://github.com/rails/rails/pull/28800
|
|/ / /
| | |
| | |
| | |
| | | |
Fixes #31909.
Closes #31911.
|
| | |
| | |
| | |
| | |
| | | |
We should call methods with `.method_name` not `::method_name`. Fix two
instances of `YAML::load` I found in favor of `YAML.load`.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Some timezones like `Europe/London` have multiple mappings in
`ActiveSupport::TimeZone::MAPPING` so return all of them instead
of the first one found by using `Hash#value`. e.g:
# Before
ActiveSupport::TimeZone.country_zones("GB") # => ["Edinburgh"]
# After
ActiveSupport::TimeZone.country_zones("GB") # => ["Edinburgh", "London"]
Fixes #31668.
|
| | |
| | |
| | |
| | |
| | | |
This faithfully preserves grapheme clusters (characters composed of other
characters and combining marks) and other multibyte characters.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
```ruby
"foo".freeze.strip_heredoc.frozen? # => true
```
Fixes the case where frozen string literals would inadvertently become
unfrozen:
```ruby
foo = <<-MSG.strip_heredoc
la la la
MSG
foo.frozen? # => false !??
```
|
| | |
| | |
| | | |
Fixes typos
|
| | |
| | |
| | |
| | |
| | |
| | | |
Skipping over 2.4.0 to sidestep the `"symbol_from_string".to_sym.dup` bug.
References #32028
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Object#blank? used to be used in this file, but it's not anymore.
This avoids a monkey-patch, for those who want to use just this isolated
feature of ActiveSupport.
|
| | |
| | |
| | |
| | | |
See https://github.com/ruby/ruby/blob/ruby_2_3/NEWS
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Make sure that when transforming the keys of a HashWithIndifferentAccess
we can still access with indifferent access in Ruby 2.5.
Closes #32007.
|
| | |
| | |
| | |
| | |
| | | |
Some places we can't remove because Ruby still don't have a method
equivalent to strip_heredoc to be called in an already existent string.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Provides both a forked process and threaded parallelization options. To
use add `parallelize` to your test suite.
Takes a `workers` argument that controls how many times the process
is forked. For each process a new database will be created suffixed
with the worker number; test-database-0 and test-database-1
respectively.
If `ENV["PARALLEL_WORKERS"]` is set the workers argument will be ignored
and the environment variable will be used instead. This is useful for CI
environments, or other environments where you may need more workers than
you do for local testing.
If the number of workers is set to `1` or fewer, the tests will not be
parallelized.
The default parallelization method is to fork processes. If you'd like to
use threads instead you can pass `with: :threads` to the `parallelize`
method. Note the threaded parallelization does not create multiple
database and will not work with system tests at this time.
parallelize(workers: 2, with: :threads)
The threaded parallelization uses Minitest's parallel exector directly.
The processes paralleliztion uses a Ruby Drb server.
For parallelization via threads a setup hook and cleanup hook are
provided.
```
class ActiveSupport::TestCase
parallelize_setup do |worker|
# setup databases
end
parallelize_teardown do |worker|
# cleanup database
end
parallelize(workers: 2)
end
```
[Eileen M. Uchitelle, Aaron Patterson]
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
I noticed this in my memory profiler report.
```
153 "@default_url_options"
152 /home/sam/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/activesupport-5.1.4/lib/active_support/core_ext/class/attribute.rb:84
```
152 copies of the string `@default_url_options` are retained on the heap in Discourse post boot.
Since this is just used for ivar lookups there is no need to use a string.
|
|\ \ \
| | | |
| | | |
| | | | |
Add support for connection pooling on RedisCacheStore
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
[ci skip]
Closes #31967
|
|\ \ \ \
| |_|/ /
|/| | | |
Fix yaml deserialization of ActiveSupport::Duration
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This ensures the duration's @parts hash has a default value, to avoid this regression introduced in 5.1:
YAML.load(YAML.dump(10.minutes)) + 1 # => NoMethodError: undefined method `+' for nil:NilClass
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Use `serialize_entry` throughout and introduce `serialize_entries`.
|
| |/ /
|/| |
| | |
| | |
| | | |
Closes #31886
Fixes #31884
|