aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/core_ext
Commit message (Collapse)AuthorAgeFilesLines
* Make getlocal and getutc always return instances of TimeAndrew White2016-04-233-1/+34
| | | | | | | | | | | | | | | Previously these methods could return either a DateTime or a Time depending on how the ActiveSupport::TimeWithZone instance had been constructed. Changing to always return an instance of Time eliminates a possible stack level too deep error in to_time where it was wrapping a DateTime instance. As a consequence of this the internal time value is now always an instance of Time in the UTC timezone, whether that's as the UTC time directly or a representation of the local time in the timezone. There should be no consequences of this internal change and if there are it's a bug due to leaky abstractions.
* Add DateTime#subsecAndrew White2016-04-231-0/+5
| | | | | Mirrors the Time#subsec method by returning the fraction of the second as a Rational.
* Change Time#sec_fraction to use subsecAndrew White2016-04-231-0/+14
| | | | Time instances can have fractional parts smaller than a nanosecond.
* Add compatibility for Ruby 2.4 `to_time` changesAndrew White2016-04-232-0/+118
| | | | | | | | | | | | | | | In Ruby 2.4 the `to_time` method for both `DateTime` and `Time` will preserve the timezone of the receiver when converting to an instance of `Time`. Since Rails 5.0 will support Ruby 2.2, 2.3 and later we need to introduce a compatibility layer so that apps that upgrade do not break. New apps will have a config initializer file that defaults to match the new Ruby 2.4 behavior going forward. For information about the changes to Ruby see: https://bugs.ruby-lang.org/issues/12189 https://bugs.ruby-lang.org/issues/12271 Fixes #24617.
* Merge pull request #24552 from yui-knk/raise_argument_errorJeremy Daer2016-04-191-0/+4
|\ | | | | | | Raise `ArgumentError` when an invalid form is passed to `Date#to_time`
| * Raise `ArgumentError` when an invalid form is passed to `Date#to_time`yui-knk2016-04-171-0/+4
| | | | | | | | | | | | | | | | 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: compat with new Array#sumJeremy Daer2016-04-181-3/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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`.
* | `ActiveSupport::Duration` supports ISO8601 formatting and parsing.Arnau Siches, Andrey Novikov2016-04-181-0/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ```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.)
* | Change 1.week to create 1 week durations instead of 7 days durations.Andrey Novikov2016-04-181-2/+3
| | | | | | | | This is just to remove astonishment from getting `3600 seconds` from typing `1.hour`.
* | Restore Hash#transform_keys behavior to always return a Hash instanceEmily2016-04-121-0/+16
|/
* Merge pull request #24345 from ↵Rafael França2016-04-051-3/+18
|\ | | | | | | | | mtsmfm/fix-marshal-with-autoloading-for-nested-class Fix marshal with autoloading for nested class/module
| * Fix marshal with autoloading for nested class/moduleFumiaki MATSUSHIMA2016-03-281-3/+18
| | | | | | | | | | | | | | | | | | #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)`
* | Match `String#to_time`'s behaviour to rubySiim Liiser2016-04-041-0/+1
| | | | | | | | | | | | | | | | 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.
* | Call super instead of returning nil for DateTime#<=>Andrew White2016-04-031-0/+18
| | | | | | | | | | | | | | | | 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.
* | Fix method String#upcase_firstbogdanvlviv2016-03-311-0/+8
| |
* | Merge pull request #23895 from glaucocustodio/add_upcase_first_methodRafael Mendonça França2016-03-301-0/+4
|\ \ | |/ |/| | | Add upcase_first method
| * Add upcase_first methodGlauco Custódio2016-02-251-0/+4
| |
* | Merge pull request #24150 from exviva/unmarshal-infinite-retryXavier Noria2016-03-111-0/+11
|\ \ | | | | | | Prevent `Marshal.load` from looping infinitely
| * | Prevent `Marshal.load` from looping infinitelyOlek Janiszewski2016-03-111-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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`.
* | | Fix `thread_mattr_accessor` thread-local variable namingMichael Ryan2016-03-111-0/+6
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 duplicated `test_` prefix [ci skip]Ryuta Kamizono2016-03-021-1/+1
| |
* | Deprecate `Module.local_constants`yui-knk2016-03-011-1/+7
|/ | | | | After Ruby 1.9, we can easily get the constants that have been defined locally by `Module.constants(false)`.
* remove args from assert_nothing_raised in testsTara Scherner de la Fuente2016-02-222-2/+2
|
* Adding test to verify the last week when the year is leapChirag Aggarwal2016-02-201-0/+4
| | | | Fixing failing specification for verifying the last week when the year is leap
* Add `#on_weekday?` method to `Date`, `Time`, and `DateTime`.Vipul A M2016-02-151-0/+10
|
* rename to 'second_to_last' and 'third_to_last'Brian Christian2016-02-101-2/+2
|
* allow Array.penultimate and Array.antepenultiate access methodsBrian Christian2016-02-091-0/+2
|
* Fix regression in `Hash#dig` for HashWithIndifferentAccess.Jon Moss2016-02-011-0/+6
|
* Match HashWithIndifferentAccess#default's behaviour with Hash#defaultDavid Cornu2016-01-071-2/+2
|
* Fix - to_s(:db) on Numeric rangeAkshay Vishnoi2015-12-292-0/+26
|
* Merge pull request #22824 from maclover7/add-numericwithformat-testsYves Senn2015-12-291-0/+6
|\ | | | | Add test coverage for ActiveSupport::NumericWithFormat#to_formatted_s
| * Add test coverage for ActiveSupport::NumericWithFormat#to_formatted_sJon Moss2015-12-281-0/+6
| |
* | Add support for Petabyte and Exabyte in number to human sizeAkshay Vishnoi2015-12-221-1/+13
|/
* Use separate test class nameDavid Heinemeier Hansson2015-12-171-1/+1
|
* Add thread_m/cattr_accessor/reader/writer suite of methods for declaring ↵David Heinemeier Hansson2015-12-171-0/+109
| | | | class and module variables that live per-thread
* Don't leak Object constants in core_ext/module/qualified_constGenadi Samokovarov2015-12-161-60/+70
|
* Add days_in_year methodJon Pascoe2015-11-101-0/+19
|
* Merge pull request #21897 from swaathi/masterKasper Timm Hansen2015-11-071-2/+36
|\ | | | | Parameterize with options to preserve the case of string
| * Parameterize with options to preserve case of stringSwaathi K2015-11-071-2/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added test cases Using kwargs instead of three seperate functions Updated parameterize in transliterate.rb Updated parameterize in transliterate.rb Added deprecation warnings and updating RDoc+Guide Misspelled separtor. Fixed. Deprecated test cases and added support to parameterize with keyword parameters Squashing commits. Fixed test cases and added deprecated test cases Small changes to Gemfile.lock and CHANGELOG Update Gemfile.lock
* | Merge pull request #21806 from kachick/fix-transformer-sizeEileen M. Uchitelle2015-11-072-4/+8
|\ \ | |/ |/| Return a sized Enumerator from Hash#transform_values{!}
| * Return a sized Enumerator from Hash#{transform_values{!}|transform_keys{!}}Kenichi Kamiya2015-09-292-4/+8
| |
* | :scissors:Rafael Mendonça França2015-10-301-1/+0
| |
* | Deprecate `HWIDA.new_from_hash_copying_default`Sean Griffin2015-10-291-1/+1
| | | | | | | | This method was already niche, and is now redundant with `.new`
* | Merge pull request #16357 from gchan/hwia-respects-to-hash-defaultSean Griffin2015-10-291-0/+18
|\ \ | | | | | | | | | | | | `HashWithIndifferentAccess.new` respects the default value or proc on objects that respond to `#to_hash`
| * | `HashWithIndifferentAccess.new` respects the default value or proc on ↵Gordon Chan2014-07-311-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | objects that respond to `#to_hash`. Builds on the work of #12550 where `.new` will convert the object (that respond to `#to_hash`) to a hash and add that hash's keys and values to itself. This change will also make `.new` respect the default value or proc of objects that respond to `#to_hash`. In other words, this `.new` behaves exactly like `.new_from_hash_copying_default`. `.new_from_hash_copying_default` now simply invokes `.new` and any references to `.new_from_hash_copying_default` are replaced with `.new`. Added tests confirm behavior.
* | | Make `Module#redefine_method` to keep method visibilityyui-knk2015-10-261-1/+19
| | | | | | | | | | | | | | | | | | | | | Before this commit `Module#redefine_method` always changes visibility of redefined method to `public`. This commit changes behavior of Module#redefine_method` to keep method visibility.
* | | Add Module#remove_possible_singleton_methodAndrew White2015-10-211-3/+15
| | | | | | | | | | | | | | | This is primarily to fix method redefinition warnings in class_attribute but may be of use in other places where we define singleton methods.
* | | Merge pull request #19992 from greysteil/handle-invalid-utf8-in-html-escapeSean Griffin2015-10-201-2/+8
|\ \ \ | | | | | | | | | | | | Handle invalid UTF-8 strings when HTML escaping
| * | | Handle invalid UTF-8 strings when HTML escapingGrey Baker2015-06-081-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Use `ActiveSupport::Multibyte::Unicode.tidy_bytes` to handle invalid UTF-8 strings in `ERB::Util.unwrapped_html_escape` and `ERB::Util.html_escape_once`. Prevents user-entered input passed from a querystring into a form field from causing invalid byte sequence errors.
* | | | Merge pull request #21302 from theunraveler/delegate_reserved_argument_namesSean Griffin2015-10-201-0/+15
|\ \ \ \ | | | | | | | | | | ActiveSupport: Fixing issue when delegating to methods named "block", "args", or "arg"