| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\
| |
| |
| | |
Fixed `ActiveSupport::TimeWithZone#-` so precision is not unnecessarily lost
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When working with objects with a nanosecond component, the `-` method may
unnecessarily cause loss of precision.
`ActiveSupport::TimeWithZone#-` should return the same result as if we were
using `Time#-`:
Time.now.end_of_day - Time.now.beginning_of_day #=> 86399.999999999
Before:
Time.zone.now.end_of_day.nsec #=> 999999999
Time.zone.now.end_of_day - Time.zone.now.beginning_of_day #=> 86400.0
After:
Time.zone.now.end_of_day - Time.zone.now.beginning_of_day
#=> 86399.999999999
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
before this change, we were allocating AS::SafeBuffer objects that were
being interpolated in to a string, so the safe buffer object was being
thrown away. This change only allocates a string (vs a string *and* a
safebuffer) and interpolates the string.
On my test application, this reduced the AS::SafeBuffer objects from
1527k per request to about 500 per request.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
html_escape_interpolated_argument is only used in mutation methods:
https://github.com/rails/rails/blob/c07d09559ec171e1904b55c7ad7e8c7d586ca51b/activesupport/lib/active_support/core_ext/string/output_safety.rb#L174
https://github.com/rails/rails/blob/c07d09559ec171e1904b55c7ad7e8c7d586ca51b/activesupport/lib/active_support/core_ext/string/output_safety.rb#L179
The return value doesn't need to be converted to an AS::SafeBuffer since
we know that the current object is an AS::SafeBuffer and will be
mutated, and the return value from html_escape_interpolated_argument
will be thrown away
|
| | |
|
|\ \
| | |
| | | |
Fix AS::NumberHelper results with rationals
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
:precision was incorrectly being applied to Rationals
before:
ActiveSupport::NumberHelper.number_to_rounded Rational(10, 3), precision: 2
=> "3.3"
after:
ActiveSupport::NumberHelper.number_to_rounded Rational(10, 3), precision: 2
=> "3.33"
|
| | | |
|
| | | |
|
|/ / |
|
| | |
|
| |
| |
| |
| |
| | |
The phrase "exact copy" in the existing docmentation is somewhat
misleading.
|
|\ \
| | |
| | |
| | |
| | | |
andreychernih/time-with-zone-string-conversion-speed-up
Speed-up TimeWithZone to String conversion
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
I've noticed that `String(model.created_at)` is performing poorly in comparision
with other fields. The source of the problem is a way `Kernel#String` works: it first
tries to call `to_str` (which causes `NoMethodError` in `method_missing`) and then calls `to_s`.
Performance tests:
tz = Time.zone.now
Benchmark.ips do |x|
x.report { String(tz) }
end
Without this code:
Calculating -------------------------------------
572 i/100ms
-------------------------------------------------
10177.7 (±18.2%) i/s - 48620 in 5.000325s
With this code:
Calculating -------------------------------------
1518 i/100ms
-------------------------------------------------
138984.2 (±10.1%) i/s - 677028 in 4.974897s
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Replacements:
5.ago => 5.seconds.ago
5.until => 5.seconds.until
5.since => 5.seconds.since
5.from_now => 5.seconds.from_now
The removed tests does not affect coverage – we have equivalent test cases in
the tests for `AS::Duration`.
See #12389 for the history and rationale behind this.
|
|\ \
| | |
| | |
| | | |
Added partial days support to `DateTime`'s `advance` method.
|
| | |
| | |
| | |
| | |
| | | |
You can now add partial days (e.g. 2.5.days) to `DateTime` with the advance method.
This was acheived by mimicing the `advance` implementation in `Time`.
|
| | |
| | |
| | |
| | | |
Railties need to be used without having to require any dependecy first.
|
| |/
|/|
| |
| |
| | |
Let users require `active_support` before loading any ActiveSupport modules
http://guides.rubyonrails.org/active_support_core_extensions.html
|
|\ \
| | |
| | | |
Remove unnecessary require of Minitest.
|
| | |
| | |
| | |
| | | |
Minitest has already been required when calling Minitest.autorun.
|
|\ \ \
| | | |
| | | | |
[ci skip] Improve doc for ModuleConstMissing.guess_for_anonymous
|
| |/ / |
|
|\ \ \
| | | |
| | | | |
Array#to now accept negative position also.
|
| |/ /
| | |
| | |
| | | |
`Array#to` is working for negative position
|
|\ \ \
| | | |
| | | | |
add test cases for negative position in Array#from
|
| |/ / |
|
|/ / |
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | | |
Hash#deep_*_keys(!) recurse into nested arrays.
Conflicts:
activesupport/CHANGELOG.md
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Following methods now recursively transform nested arrays, too.
* Hash#deep_transform_keys
* Hash#deep_transform_keys!
* Hash#deep_stringify_keys
* Hash#deep_stringify_keys!
* Hash#deep_symbolize_keys
* Hash#deep_symbolize_keys!
|
| | | |
|
| | |
| | |
| | |
| | | |
Just moved class methods up in file and moved `def self.` methods into `class << self`.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
roccoblues/fix_duplicate_activesupport_subscribers
Fixed duplicate subscribers in ActiveSupport::Subscriber
Conflicts:
activesupport/CHANGELOG.md
|
| | | |
| | | |
| | | |
| | | |
| | | | |
ActiveSupport::Subscriber no longer creates multiple subscribers when
you redefine a method.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This deprecation was released in 4.1.0 and can be removed for 4.2.0,
deprecation message / handling is no longer necessary.
|
|\ \ \ \
| | | | |
| | | | | |
[Fixes #15064] Calling number_to_delimited on a ActiveSupport::SafeBuffer results in mangled output
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
`ActiveSupport::SafeBuffer` values aren't mangled.
Fixes #15064
|
| | | | | |
|
|/ / / /
| | | |
| | | |
| | | | |
Use if/else instead of unless/else so conditional reads better.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Namely, if the mday is omitted but any other upper components are, then instead
of supplying the mday from the current time, it defaults to 1.
|
| | | | |
|
|\ \ \ \ |
|
| | | | |
| | | | |
| | | | | |
Current docs are wrong. Does not accept strftime inputs.
|
| |/ / /
|/| | | |
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
Fix Hash#deep_merge bug and improve documentation — resolves #12738
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Previously merging into a hash with a falsy value would not result in
the merge-block being called. The fix is simply to check for presence
of the key in the hash.
The documentation example for `deep_merge` now appropriately
demonstrates what a deep merge does.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* Strips leading underscores.
* Changes some unnecessary gsub!s to sub!s.
* Replaces some anchors ^, $ with \A, \z.
* Documents that human inflection rules are applied.
* Documents that words are downcased except acronyms.
* Adds an example with an acronym.
* Rewords docs.
|
| | | | | |
|