| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
[Fixes #11512] improves cache size calculation in MemoryStore
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
ActiveSupport::Cache::MemoryStore
Previously, the cache size of `ActiveSupport::Cache::MemoryStore` was calculated
as the sum of the size of its entries, ignoring the size of keys and any data
structure overhead. This could lead to the calculated cache size sometimes being
10-100x smaller than the memory used, e.g., in the case of small values.
The size of a key/entry pair is now calculated via `#cached_size`:
def cached_size(key, entry)
key.to_s.bytesize + entry.size + PER_ENTRY_OVERHEAD
end
The value of `PER_ENTRY_OVERHEAD` is 240 bytes based on an [empirical
estimation](https://gist.github.com/ssimeonov/6047200) for 64-bit MRI on
1.9.3 and 2.0.
Fixes GH#11512 https://github.com/rails/rails/issues/11512
|
|\ \
| |/
|/| |
|
| |\ |
|
| | |
| | |
| | |
| | | |
Array#to_s calls each element's inspect since ruby 1.9
|
| | |
| | |
| | |
| | | |
[ci skip]
|
| | |
| | |
| | |
| | | |
[ci skip
|
| | |
| | |
| | |
| | | |
[ci skip]
|
| |/ |
|
| |
| |
| |
| | |
[ci skip]
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes situations where nested NoMethodError exceptions are masked
by delegations. This would cause confusion especially where there was a
problem in the Rails booting process because of a delegation in the
routes reloading code.
Fixes #10559
|
| |
| |
| |
| |
| |
| |
| |
| | |
If the DateTime core extensions were loaded before the Date core extensions
then you would get a superclass mismatch as DateTime hasn't been defined
yet so it gets set to Object by the acts_like core extension.
Fixes #11206
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Benchmark:
user system total real
old 0.510000 0.000000 0.510000 ( 0.506749)
new 0.330000 0.000000 0.330000 ( 0.336187)
|
| |
| |
| |
| |
| |
| |
| | |
Benchmark:
user system total real
old 1.550000 0.040000 1.590000 ( 1.585866)
new 1.250000 0.040000 1.290000 ( 1.287693)
|
| |
| |
| |
| |
| |
| |
| | |
Benchmark:
user system total real
old 6.090000 0.120000 6.210000 ( 6.202039)
new 5.930000 0.110000 6.040000 ( 6.042022)
|
| |
| |
| |
| |
| |
| |
| | |
Benchmark:
user system total real
old 5.960000 0.020000 5.980000 ( 5.981754)
new 5.740000 0.030000 5.770000 ( 5.757201)
|
| |
| |
| |
| |
| |
| |
| | |
Benchmark:
user system total real
old 0.740000 0.000000 0.740000 ( 0.744358)
new 0.550000 0.000000 0.550000 ( 0.553690)
|
| |
| |
| |
| |
| |
| |
| |
| | |
Benchmark:
1000000.times { str.to(30) }
user system total real
old 0.490000 0.110000 0.600000 ( 0.607374)
new 0.390000 0.000000 0.390000 ( 0.387306)
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The standard Ruby behavior for Time.at is to return the same type of
time when passing an instance of Time as a single argument. Since the
an ActiveSupport::TimeWithZone instance may be a different timezone than
the system timezone and DateTime just understands offsets the best we
can do is to return an instance of Time with the correct offset.
Fixes #11350.
|
| |
| |
| |
| |
| |
| |
| |
| | |
When Time.at_with_coercion (wraps Time.at) is called with a single
argument that "acts_like?(:time)" it is coerced to integer thus losing
it's microsecond percision.
This commits changes this to use `#to_f` to prevent the problem
|
| | |
|
|/
|
|
|
| |
Hash#select! returns nil if the hash didn't change and thus behaves differently
from select, so it's return value can't be used as result for the latter.
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit d108672dada7ba97d3b3b56f0c6001cea621061e.
Conflicts:
activesupport/CHANGELOG.md
|
| |
|
| |
|
| |
|
|
|
| |
core extensions (`core_ext/string/encoding`).
|
|
|
| |
in favor of `Module#local_constants`
|
| |
|
| |
|
|
|
|
| |
and `Time#local_time` in favour of `Time#utc` and `Time#local`
|
|
|
|
|
| |
If you're using it to compare hashes for the purpose of testing,
please use MiniTest's assert_equal instead.
|
|\
| |
| | |
Use symbols instead of strings in ActiveSupport::Concern
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
ActiveSupport::Concern is used all over Rails
This PR will only create 3 new objects as keys are never recreated and
are not subject to garbage collection.
The strings were being uniquely created and garbage collected. I don't
have any performance numbers but this should be better than all of the
GC.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Use native Array#uniq and Array#uniq! instead.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Commit cfa35c55bb38b27af305ad21408e181bc3cd739e removed the
buffered_logger from AS, which required the logger file. Now we need to
add the proper require here.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In #11195 I noticed a trailing comma in the docs, but I decided to
further clean it up.
What I have done:
* Clean up the trailing comma in the docs and some extra whitespace
lines.
* Used `Array#extract` options to factor the repetitive pattern of
`args.last.is_a(Hash) ? ...`
* Renamed the local var `config` to `options` in `define_callbacks`, as
`options` seems to be the de facto name for the options objects.
* Renamed the local var `l` to `line` in `define_callback` (maybe it
meant `lambda` in the context) as single `l` may look like `1` in some
fonts.
|
| |
| |
| |
| |
| |
| |
| | |
_ Rename the define_callbacks params to `names`
- in order to match the naming conventions for `get_callbacks` and `set_callbacks` at https://github.com/rails/rails/blob/master/activesupport/lib/active_support/callbacks.rb#L736-743
- `define_callbacks` just register names(events), not define the real callback functions.
- Rename the `reset_callbacks` params
|
| |
| |
| |
| | |
The change is commited at ba552764344bc0a3c25b8576ec11f127ceaa16da
|
| | |
|