| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
String#gsub(pattern, '')
|
|
|
|
| |
That is a better name, thanks @jeremy.
|
|
|
|
| |
See the CHANGELONG message in the patch for further details.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In preparing https://github.com/rails/rails/pull/11855, it took me a
minute to understand what was going on due to naming (parts refers first
to an attr_accessor, then to a local, and is then reassigned), but also
because the iterator conditionally builds nulls and then removes them.
I refactored to something much more functional-looking that I find
easier to read, but you may or may not. If you do, great! Enjoy! If
not, oh well, I tried. Can't win 'em all :)
Rationale:
* no name conflict between local var and attr_accessor
* no reassignment of local var
* algorithm spelled out in steps
* unused items in initial list filtered out early
* empty-list case handled early instead of reassigning local var
* no duplication of formatting strings ("0 seconds")
Benchmarks (after PR #11855 merged):
10000.times do
1.second.inspect
end
original #inspect
0.350000 0.000000 0.350000 ( 0.354709)
0.330000 0.000000 0.330000 ( 0.331885)
0.330000 0.000000 0.330000 ( 0.334441)
refactored #inspect
0.340000 0.000000 0.340000 ( 0.340080)
0.340000 0.010000 0.350000 ( 0.345069)
0.330000 0.000000 0.330000 ( 0.335873)
10000.times do
(1.day + 1.month + 2.minutes + 1.day).inspect
end
original #inspect
0.400000 0.000000 0.400000 ( 0.403027)
0.400000 0.000000 0.400000 ( 0.403781)
0.390000 0.000000 0.390000 ( 0.387596)
refactored #inspect
0.400000 0.010000 0.410000 ( 0.399792)
0.400000 0.000000 0.400000 ( 0.404145)
0.400000 0.000000 0.400000 ( 0.403820)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Even though singularize tells a better story, chop is more than 50%
faster and is all that is necessary in the case of Duration#inspect, in
which all of the candidates for chopping appear in the same method and
are all singularized by removing the final 's'.
Benchmarks:
10000.times do
1.second.inspect
end
original #inspect
0.740000 0.000000 0.740000 ( 0.739065)
0.740000 0.000000 0.740000 ( 0.741458)
0.740000 0.010000 0.750000 ( 0.744011)
refactored #inspect
0.330000 0.000000 0.330000 ( 0.333390)
0.330000 0.000000 0.330000 ( 0.331013)
0.320000 0.000000 0.320000 ( 0.330103)
10000.times do
(1.day + 1.month + 2.minutes + 1.day).inspect
end
original #inspect
0.790000 0.000000 0.790000 ( 0.794624)
0.770000 0.000000 0.770000 ( 0.774577)
0.770000 0.010000 0.780000 ( 0.771295)
refactored #inspect
0.390000 0.000000 0.390000 ( 0.392921)
0.400000 0.000000 0.400000 ( 0.397412)
0.370000 0.000000 0.370000 ( 0.379660)
|
| |
|
|
|
|
| |
Jruby cannot unlink a tempfile unless it is closed first.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Hopefully the first of many related to #11700.
With these changes the railties tests wont 100% pass but at least they
will run and show the errors.
The first problem was the @method_name variable was never set.
This was causing ENV["ISOLATION_TEST"] to always be nil which
would cause the test output to never be written to the tempfile.
The second problem was that an invalid -t option was being passed
to minitest and minitest was erroring out.
The third problem was the run method needs to always return an
instance of the test class it is trying to isolate. We were returning
a ProxyTestResult instead.
|
|
|
|
|
|
| |
Similar implementations of #in_time_zone exists for Date, Time and DateTime so
method is extracted into its own module. Also some logic is extracted into
private method.
|
|
|
|
|
|
| |
Methods: :past? and :future? are already defined identically
in date_and_time/calculations.rb which is included in Date.
Because DateTime is a subclass of Date, it can call them.
|
|
|
|
|
|
|
| |
Remove cow => kine from default inflections but leave the test case
in place to prevent regression of the [old Trac ticket 4929][1].
[1]: http://web.archive.org/web/20090314050915/http://dev.rubyonrails.org/ticket/4929
|
|\
| |
| | |
Added Time#middle_of_day method
|
| |
| |
| |
| | |
Added middle_of_day method to Date and DateTime
|
| |
| |
| |
| |
| |
| | |
Use a lambda to ensure that the generated string respects the offset of
the time value. Also add DateTime#to_s(:iso8601) and Date#to_s(:iso8601)
for completeness.
|
| |
| |
| |
| | |
for easy Javascript date parsing
|
|\ \ |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Minor refactor - Uses Enumerable#to_a instead of iterate and add to an array
|
| | | |
| | | |
| | | |
| | | | |
array
|
|\ \ \ \
| |_|/ /
|/| | | |
[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
|
| | | |
|
| | | |
|