| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| | |
Raise `ArgumentError` when an invalid form is passed to `Date#to_time`
|
| |
| |
| |
| |
| |
| |
| |
| | |
Before this commit
`NoMethodError: undefined method `form_name' for Time:Class` is raised
when an invalid argument is passed.
It is better to raise `ArgumentError` and show list of valid arguments
to developers.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Ruby 2.4 introduces `Array#sum`, but it only supports numeric elements,
breaking our `Enumerable#sum` which supports arbitrary `Object#+`.
To fix, override `Array#sum` with our compatible implementation.
Native Ruby 2.4:
%w[ a b ].sum
# => TypeError: String can't be coerced into Fixnum
With `Enumerable#sum` shim:
%w[ a b ].sum
# => 'ab'
We tried shimming the fast path and falling back to the compatible path
if it fails, but that ends up slower even in simple causes due to the cost
of exception handling. Our only choice is to override the native `Array#sum`
with our `Enumerable#sum`.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
```ruby
ActiveSupport::Duration.parse('P3Y6M4DT12H30M5S')
(3.years + 3.days).iso8601
```
Inspired by Arnau Siches' [ISO8601 gem](https://github.com/arnau/ISO8601/)
and rewritten by Andrey Novikov with suggestions from Andrew White. Test
data from the ISO8601 gem redistributed under MIT license.
(Will be used to support the PostgreSQL interval data type.)
|
|\ \
| | |
| | |
| | | |
Fix forced cache miss for fetch when called without a block.
|
|/ /
| |
| |
| |
| |
| | |
- Raised an argument error if no block is passed to #fetch with
'force: true' option is set.
- Added tests for the same.
|
| |
| |
| |
| | |
This is just to remove astonishment from getting `3600 seconds` from typing `1.hour`.
|
|\ \
| |/
|/| |
Restore Hash#transform_keys behavior to always return a Hash instance
|
| | |
|
| | |
|
|/ |
|
| |
|
|\
| |
| | |
Clean up after a failure in a run callback
|
| |
| |
| |
| | |
Also, make sure to call the +complete+ hooks if +run+ fails.
|
|\ \
| | |
| | |
| | |
| | | |
mtsmfm/fix-marshal-with-autoloading-for-nested-class
Fix marshal with autoloading for nested class/module
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
#24150 break autoloading for nested class/module.
There is test for nested class but it doesn't work correctly.
Following code will autoload `ClassFolder::ClassFolderSubclass` before `Marshal.load`:
`assert_kind_of ClassFolder::ClassFolderSubclass, Marshal.load(dumped)`
|
|\ \ \
| |_|/
|/| |
| | | |
`number_to_phone` formats number with regexp
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
By default, this method formats US number. This commit extends its
functionality to format number for other countries with a custom regular
expression.
number_to_phone(18812345678, pattern: /(\d{3})(\d{4})(\d{4})/)
# => 188-1234-5678
The output phone number is divided into three groups, so the regexp
should also match three groups of numbers.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously `String#to_time` returned the midnight of the current date
in some cases where there was no relavant information in the string.
Now the method returns `nil` instead in those cases.
Fixes #22958.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The native DateTime#<=> implementation can be used to compare instances
with numeric values being considered as astronomical julian day numbers
so we should call that instead of returning nil.
Fixes #24228.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If the test run was interrupted in some way then it left temporary
directories inside of test causing the git worktree to be in a dirty
state. By overriding the run method we can use the block form of
Dir.mktmpdir to ensure that the directories are cleaned up no matter
which way the test run is exited.
|
|/ /
| |
| |
| |
| |
| | |
The constant reference A::B used to trigger autoloading causes a warning
to be logged about the possible use of :: in a void context so assign it
to the _ variable to prevent the warnings from being triggered.
|
| | |
|
|\ \
| |/
|/|
| | |
Add upcase_first method
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
References #24205.
|
|\ \
| | |
| | | |
Prevent `Marshal.load` from looping infinitely
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Fix a bug in `Marshal.load` that caused it to loop indefinitely when
trying to autoload a constant that resolved to a different name.
This could occur when marshalling an ActiveRecord 4.0 object (e.g. into
memcached) and then trying to unmarshal it with Rails 4.2. The
marshalled payload contains a reference to
`ActiveRecord::ConnectionAdapters::Mysql2Adapter::Column`, which in
Rails 4.2 resolves to
`ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::Column`.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The current implentation of `thread_mattr_accessor` is setting
differently-named thread variables when defining class and
instance writer methods, so the method isn't working as documented:
Account.user = "DHH"
Account.user # => "DHH"
Account.new.user # => nil
a = Account.new
a.user = "ABC" # => "ABC"
a.class.user # => "DHH"
At this point `:attr_Account_user` and `:attr_Class_user` thread-local
variables have been created. Modify the reader and writer methods to use
the class name instead of 'Class'.
|
|\ \
| | |
| | | |
Remove load_paths file
|
| |/ |
|
| | |
|
|\ \
| | |
| | |
| | | |
Deprecate `Module.local_constants`
|
| |/
| |
| |
| |
| | |
After Ruby 1.9, we can easily get the constants that have been
defined locally by `Module.constants(false)`.
|
|/
|
|
|
|
| |
These should allow external code to run blocks of user code to do
"work", at a similar unit size to a web request, without needing to get
intimate with ActionDipatch.
|
|\
| |
| |
| | |
Fix logger silencing for broadcasted loggers
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix #23609
Commit 629efb6 introduced thread safety to logger silencing but it
didn't take into account the fact that the logger can be extended with
broadcasting to other logger.
This commit introduces local_level to broadcasting Module which enables
broadcasted loggers to be properly silenced.
|
| | |
|
|\ \
| | |
| | | |
Adding test to verify the last week when the year is leap
|
| | |
| | |
| | |
| | | |
Fixing failing specification for verifying the last week when the year is leap
|
|\ \ \
| | | |
| | | | |
Make collection caching explicit.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Reevaluating the log output generated from this instrumentation,
we've found that it wasn't all that useful in practice.
```
Caches multi read:
- views/david/2/4184ab71db6849621a4d8820fcd2c0ad
- views/david/2/4184ab71db6849621a4d8820fcd2c0ad
- views/david/3/4184ab71db6849621a4d8820fcd2c0ad
- views/david/3/4184ab71db6849621a4d8820fcd2c0ad
```
If rendering many templates the output is inscrutable, and it's impossible
to see how many cache misses there were.
Revert ca6aba7f30 and implement a better way later.
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Cleans up four items I came across in ActiveSupport::Dependencies:
- DependenciesTest#
test_dependency_which_raises_exception_isnt_added_to_loaded_set:
Fixes current implementation which will pass no matter what since the
filepath is never added to "loaded" or "history" without being
expanded first.
- Remove DependenciesTest#test_unhook. Seems leftover from when
alias_method_chain was used in Loadable and ModuleConstMissing.
The test will always pass since Module never responds to those methods
- WatchStack#new_constants documentation: update self to @stack.
Looks like self was leftover from when WatchStack inherited from Hash
- Remove ActiveSupport namespace from call to
Dependencies.constant_watch_stack.watching? since the namespace is not
needed, Dependencies is called two other times in the same method
without it (even on the same line) and it brings the line to within
80 characters
|
| | |
|
|\ \
| | |
| | | |
Converting backtrace to strings before calling set_backtrace
|