| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Fix implicit calculations with scalars and durations
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously calculations where the scalar is first would be converted
to a duration of seconds but this causes issues with dates being
converted to times, e.g:
Time.zone = "Beijing" # => Asia/Shanghai
date = Date.civil(2017, 5, 20) # => Mon, 20 May 2017
2 * 1.day # => 172800 seconds
date + 2 * 1.day # => Mon, 22 May 2017 00:00:00 CST +08:00
Now the `ActiveSupport::Duration::Scalar` calculation methods will try
to maintain the part structure of the duration where possible, e.g:
Time.zone = "Beijing" # => Asia/Shanghai
date = Date.civil(2017, 5, 20) # => Mon, 20 May 2017
2 * 1.day # => 2 days
date + 2 * 1.day # => Mon, 22 May 2017
Fixes #29160, #28970.
|
|/ |
|
|
|
|
|
|
| |
This retains the existing behavior of
ActiveSupport::Cache.expand_cache_key (as used by etaging) where the
cache key includes the version.
|
|
|
|
|
| |
* Fix indentation.
* Add backticks.
|
| |
|
|\
| |
| |
| |
| | |
Message encryptor auth tag check
Fixes MessageEncryptor when used in AEAD mode. Specifically, we need to check if the `auth_tag` is nil. This may arise when an AEAD encryptor is used to decrypt a ciphertext generated from a different mode, such as CBC-HMAC. Basically, the number of double dashes will differ and `auth_tag` may be nil in this case.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When MessageEncryptor tries to +decrypt_and_verify+ ciphertexts
generated in a different mode (such CBC-HMAC), the +auth_tag+ may be
+nil+ and must explicitly check for it.
See the discussion here:
https://github.com/rails/rails/pull/28132#discussion_r116388462
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some cache backends support the `unless_exist` option, which tells them
not to overwrite an existing entry. The local cache currently always
stores the new value, even though the backend may have rejected it.
Since we can't tell which value will end up in the backend cache, we
should delete the key from the local cache, so that the next read for
that key will go to the backend and pick up the correct value.
|
|\ \
| | |
| | | |
Handle loops in the cause chain in Rescuable#rescue_with_handler
|
| | | |
|
|/ / |
|
| |
| |
| | |
The method is named `delegate_missing_to`, not `delegate_to_missing`
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Fix rdoc code formatting — `tt`, not backticks
* Fix/simplify sentence grammar — should at least just be “and the like”, not “likes”, but this is just general tightening up.
* Add note that delegated methods must be public. Tested here: https://github.com/rails/rails/blob/7ff5ccae94ce2aff76b5f8a31a28e305a047d642/activesupport/test/core_ext/module_test.rb#L359-L365
* Simplify example code for delegate_missing_to. The example had complexity that wasn’t necessary for demonstrating `delegate_missing_to`. This gets rid of a bunch of cruft so the example is more obvious about what’s going on regarding the feature itself.
[ci skip]
|
|\ \
| | |
| | | |
Use `flat_map` rather than `map(&:...).flatten`
|
| | | |
|
|/ /
| |
| |
| |
| |
| | |
* Remove trailing spaces.
* Add backticks around method and command.
* Fix indentation.
|
| |
| |
| |
| |
| |
| | |
https://github.com/rails/rails/commit/505537082849d912e8e29819655b80a573e93c0c
added a call to `remove_possible_method`, but didn't require the file
that defines it.
|
|\ \
| | |
| | | |
`respond_to_missing?` should be private
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Follow up of 03d3f036.
Some of `respond_to?` were replaced to `respond_to_missing?` in 03d3f036.
But the visibility is still public. It should be private.
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
The Enumerator#size method was introduced in Ruby 2.0.
These tests were added when Rails 4.1 was current, and Ruby 1.9.3 was
still supported. Since Rails 5 only Ruby >= 2.2.2 is supported, so the
checks are no longer necessary.
|
| |
| |
| |
| | |
[ci skip]
|
|\ \
| | |
| | | |
Add error logging to Active Job
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Active Job logging instrumentation is changed to log errors (with
backtrace) when a job raises an exception in #perform. This improves
debugging during development and test with the default configuration.
Prior to Rails 5, the default development configuration ran jobs with
InlineAdapter, which would raise exceptions to the caller and be
shown in the development log. In Rails 5, the default adapter was
changed to AsyncAdapter, which would silently swallow exceptions
and log a "Performed SomeJob from Async..." info message. This could
be confusing to a developer, as it would seem that the job was
performed successfully.
This patch removes the "Performed..." info message from the log
and adds an error-level "Error performing SomeJob..." log message
which includes the exception backtrace for jobs that raise an
exception within the #perform method. It provides this behavior for
all adapters.
|
| | | |
|
| | |
| | |
| | | |
Since 3aee9126aa6309538ee64064dcabcd34d7cc7d26, this class hasn't inherited from Array.
|
| | |
| | |
| | |
| | | |
handler, and make sure they are used for the ActiveSupport::Notifications message.
|
|\ \ \
| | | |
| | | | |
Explicitly require AS::Time in AS::Testing::TimeHelpers
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If you just try to use `ActiveSupport::Testing::TimeHelpers` standalone by requiring `active_support/testing/time_helpers`, you currently get an error: `NoMethodError: undefined method `change' for 2017-12-14 01:04:44 -0500:Time`
9f6e82ee4783e491c20f5244a613fdeb4024beb5 added a dependency on `AS::Time` by using `AS::Time#change`.
Here's a script to reproduce the error:
```ruby
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
gem "activesupport", github: "rails/rails"
end
require "active_support/testing/time_helpers"
require "minitest/autorun"
class BugTest < Minitest::Test
include ActiveSupport::Testing::TimeHelpers
def test_stuff
travel_to Time.new(2017, 12, 14, 01, 04, 44) do
assert true
end
end
end
```
It currently fails for all 5.x.x versions and master. Ideally, this would be backported to `5-0-stable` and `5-1-stable` as well.
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If we require 'active_support/core_ext/enumerable' on Ruby 2.4,
we'll see following warning because `Enumerable#sum` and `Array#sum`
are added in Ruby 2.4.
```
rails/rails/activesupport/lib/active_support/core_ext/enumerable.rb:20: warning: method redefined; discarding old sum
```
The minimal way to fix the warning is `alias sum sum`.
```
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
$ ruby -w -e "def a; end; def a; end"
-e:1: warning: method redefined; discarding old a
-e:1: warning: previous definition of a was here
$ ruby -w -e "def a; end; alias a a; def a; end"
```
But this behavior is not intended. (@amatsuda was told by @ko1)
So we should use `alias` as a meaningful way.
Ruby 2.4's `sum` (`orig_sum`) assumes an `identity` is `0` when we omit `identity`
so we can delegate to `orig_sum` with explicit `identity` only.
In a strict sense, we can detect `identity` by check instance's class
but we don't care at this time about that because calling `Enumerable#sum` is rare.
In many cases, we will call `Array#sum`.
|
| | |
| | |
| | |
| | | |
[ci skip]
|
| | |
| | |
| | |
| | |
| | | |
There's a difference in the results between `Date#to_time(:local)` and
`Date#in_time_zone` but it is subtle and can confuse users (like me :-).
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Prevent aliases Array#append and Array#prepend
|
| | | |
| | | |
| | | |
| | | | |
https://github.com/ruby/ruby/commit/f57d515d69b7a35477b9ba5d08fe117df1f1e275
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Support `:offset` in `Time#change` and `:zone` or `:offset`
in `ActiveSupport::TimeWithZone#change`.
Fixes #28723.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Was looking through #28402, and realized the CHANGELOG.md entry is in the wrong
place. Sorry we didn't catch this during code review :cry:
[ci skip]
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`fetch_values` was added to Hash in Ruby 2.3.0:
https://bugs.ruby-lang.org/issues/10017
This patch adds an implemention for instances of HWAI, in line
with the existing definitions of `fetch` and `values_at`.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
So we shouldn't claim they're there, even when asked explicitly.
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
HashWithIndifferentAccessTest::HashWithIndifferentAccess`
Caused since #28607.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
In the context of controller parameters, reverse_merge is commonly used
to provide defaults for user input. Having an alias to reverse_merge
called with_defaults feels more idiomatic for Rails.
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | | |
mubashirhanif/add_keep_id_suffix_option_to_humanize_new
Add keep id suffix option to humanize new
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
some documentation
remove extra whitespace.
Added id in the middle test case and corrected some testcases.
Some Coding standard guidelines corrections as suggested by codeclimate.
Some more corrections suggested by codeclimate.
|
| | | | |
|