aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
Commit message (Collapse)AuthorAgeFilesLines
* Stop using local variables everywhere, make use of the readerCarlos Antonio da Silva2013-12-036-20/+20
|
* Refactor to avoid earlier returnsCarlos Antonio da Silva2013-12-031-5/+9
|
* Rename variable that holds whether or not the class should validate a float ↵Carlos Antonio da Silva2013-12-035-9/+9
| | | | number
* Added Date#all_week/month/quarter/year for generating date rangesDimko2013-12-032-21/+21
|
* Add support for localized date referencesColin Bartlett2013-12-031-0/+10
| | | | | | | Ruby's Date class automatically gives us #yesterday, #today, and #tomorrow. And ActiveSupport has a handy Time.zone.today for getting a localized version. But there was no localized version of #yesterday or #tomorrow. Until now.
* Tidy up previous commit, fix message assertion and improve testsCarlos Antonio da Silva2013-12-031-1/+3
|
* Modify the Hash#assert_valid_keys error message so that it shows the valid ↵Nerian2013-12-031-3/+3
| | | | | | | | | | | | | | | | | | | | keys. Also, show the wrong value as it was entered. { :failore => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ]) => ArgumentError: Unknown key: failore { 'failore' => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ]) => ArgumentError: Unknown key: failore { 'failore' => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ]) => ArgumentError: Unknown key: "failore". Valid keys are: :failure, :funny { :failore => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ]) => ArgumentError: Unknown key: :failore. Valid keys are: :failure, :funny Conflicts: activerecord/CHANGELOG.md Closes #11624.
* Merge pull request #13060 from chancancode/change_log_for_json_refactorCarlos Antonio da Silva2013-12-021-0/+27
|\ | | | | CHANGELOG for JSON refactor + added back the `encode_big_decimal_as_string` option with warning
| * Added back the `encode_big_decimal_as_string` option with warningGodfrey Chan2013-12-021-0/+27
| | | | | | | | | | Also added the missing CHANGELOG entry for #12183 @ 80e7552073 and 4d02296cfb.
* | Avoid generating more strings while iterating to create methodsCarlos Antonio da Silva2013-12-021-1/+1
| | | | | | | | | | Use the already existing strings instead of creating a new one each time just to test if it responds to the methods.
* | Merge remote-tracking branch 'origin/master'Rafael Mendonça França2013-12-022-2/+2
|\ \
| * | Remove deprecated cattr_* requiresGenadi Samokovarov2013-12-032-2/+2
| | |
* | | :sicssors:Rafael Mendonça França2013-12-028-15/+2
| | |
* | | Options are not optionalRafael Mendonça França2013-12-021-2/+2
| | |
* | | Make execute priave APIRafael Mendonça França2013-12-027-12/+16
| | |
* | | Make load of NumberHelper thread safeRafael Mendonça França2013-12-028-26/+11
| | |
* | | Merge pull request #10996 from mattdbridges/number-helper-refactorRafael Mendonça França2013-12-029-306/+533
|\ \ \ | |/ / |/| | | | | | | | | | | | | | Refactor and clean up number helpers Conflicts: activesupport/lib/active_support/number_helper.rb
| * | Extract ActiveSupport::NumberHelper methods to classesMatt Bridges2013-07-019-308/+533
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to the overall complexity of each method individually as well as the global shared private module methods, this pulls each helper into it's own converter class inheriting from a generic `NumberBuilder` class. * The `NumberBuilder` class contains the private methods needed for each helper method an eliminates the need for special definition of specialized private module methods. * The `ActiveSupport::NumberHelper::DEFAULTS` constant has been moved into the `NumberBuilder` class because the `NumberBuilder` is the only class which needs access to it. * For each of the builders, the `#convert` method is broken down to smaller parts and extracted into private methods for clarity of purpose. * Most of the mutation that once was necessary has now been eliminated. * Several of the mathematical operations for percentage, delimited, and rounded have been moved into private methods to ease readability and clarity. * Internationalization is still a bit crufty, and definitely could be improved, but it is functional and a bit easier to follow. The following helpers were extracted into their respective classes. * `#number_to_percentage` -> `NumberToPercentageConverter` * `#number_to_delimited` -> `NumberToDelimitedConverter` * `#number_to_phone` -> `NumberToPhoneConverter` * `#number_to_currency` -> `NumberToCurrencyConverter` * `#number_to_rounded` -> `NumberToRoundedConverter` * `#number_to_human_size` -> `NumberToHumanSizeConverter` * `#number_to_human` -> `NumberToHumanConverter`
* | | Unify cattr and mattr accessors declarationsGenadi Samokovarov2013-12-023-195/+165
| | |
* | | added missing requireDaniel Harrington2013-12-021-0/+1
| |/ |/| | | we’re using .delegate and should require it.
* | EscapedString is also private API [ci skip]Godfrey Chan2013-12-011-1/+1
| |
* | Merge pull request #11796 from thedarkone/time-zone-thread-safetyGuillermo Iguaran2013-11-301-13/+7
|\ \ | | | | | | AS::TimeZone's cache thread safety
| * | Remove AS::TZ.lookup(name).thedarkone2013-08-071-5/+1
| | | | | | | | | | | | The method doesn't really make much sense (find_tzinfo will succeed for any imput provided).
| * | Unify AS::TZ's lazy init maps.thedarkone2013-08-071-9/+5
| | | | | | | | | | | | There's no point in having 2 almost identical (@lazy_zones_map and @zones_map) lazy initialized TZ instance caches.
| * | Use TS::Cache instead plain Hash in TimeZone.thedarkone2013-08-071-5/+7
| | | | | | | | | | | | Plain ruby Hashes are not thread safe.
* | | Merge pull request #13055 from ↵Rafael Mendonça França2013-11-301-0/+8
|\ \ \ | | | | | | | | | | | | | | | | dmitriy-kiriyenko/fix-segmentation-fault-it-ruby-2.0.0-p353 Fix segmentation fault in Ruby 2.0.0-p353.
| * | | Fix segmentation fault in Ruby 2.0.0-p353.Dmitriy Kiriyenko2013-11-301-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Ruby 2.0.0-p353 there was a [commit](https://github.com/ruby/ruby/commit/66915c507777c5e3a978fa73de25db763efd9206) that switched case matching from actual sending `===` method to magic lookup, that does not see it in `method_missing`. It's hard to predict how exactly and when exactly this bug will be solved so here I suggest a solution of defining it in Duration directly. In Ruby 2.0.0-p353 without the added fix added test crashes to segmentation fault.
* | | | Merge pull request #13111 from akshay-vishnoi/typoCarlos Antonio da Silva2013-11-301-2/+2
|\ \ \ \ | |/ / / |/| | | Typo fixes [ci skip]
| * | | Typo fixes [ci skip]Akshay Vishnoi2013-11-301-2/+2
| | | |
* | | | Improve Module#delegate documentation to tell that delegate don't work with ↵Lauro Caetano2013-11-291-0/+2
|/ / / | | | | | | | | | private or protected methods. [ci skip]
* | | Deprecate ActiveSupport::TestCase.describeMike Moore2013-11-271-5/+12
| | | | | | | | | | | | | | | Provide message to define ActiveSupport::TestCase.name instead. Allow calling describe with a block, which Minitest::Spec does.
* | | [ci skip] removed singulars section from classify docGreg Molnar2013-11-271-4/+0
| | |
* | | Deprecated Numeric#{ago,until,since,from_now}Godfrey Chan2013-11-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The user is expected to explicitly convert the value into an AS::Duration, i.e. `5.ago` => `5.seconds.ago` This will help to catch subtle bugs like: def recent?(days = 3) self.created_at >= days.ago end The above code would check if the model is created within the last 3 **seconds**. In the future, `Numeric#{ago,until,since,from_now}` should be removed completely, or throw some sort of errors to indicate there are no implicit conversion from `Numeric` to `AS::Duration`. Also fixed & refactor the test cases for Numeric#{ago,since} and AS::Duration#{ago,since}. The original test case had the assertion flipped and the purpose of the test wasn't very clear.
* | | Process::Status should get a :nodoc: [ci skip]Godfrey Chan2013-11-261-1/+1
| | |
* | | Make the JSON encoder pluggableGodfrey Chan2013-11-261-2/+8
| | |
* | | Removed the Ruby encoder and switched to using the JSON gemGodfrey Chan2013-11-262-80/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | Got all the tests passing again. Support for `encode_json` has been removed (and consequently the ability to encode `BigDecimal`s as numbers, as mentioned in the previous commit). Install the `activesupport-json_encoder` gem to get it back.
* | | Removed support for encoding BigDecimal as a JSON numberGodfrey Chan2013-11-262-14/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is because the new encoder will no longer support encode_json. Therefore our only choice is to return `to_i` or `to_s` in `BigDecimal#as_json`. Since casting a BigDecimal to an integer is most likely a lossy operation, we chose to encode it as a string. Support for encoding BigDecimal as a string will return via the `activesupport-json_encoder` gem.
* | | Merge remote-tracking branch 'docrails/master'Xavier Noria2013-11-2412-76/+76
|\ \ \ | | | | | | | | | | | | | | | | | | | | Conflicts: activesupport/lib/active_support/core_ext/hash/deep_merge.rb activesupport/lib/active_support/core_ext/hash/keys.rb
| * | | The option is called encode_big_decimal_as_string [ci-skip]Godfrey Chan2013-11-151-1/+1
| | | |
| * | | Change syntax format for example returned valuesPrem Sichanugrist2013-11-1112-79/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to our guideline, we leave 1 space between `#` and `=>`, so we want `# =>` instead of `#=>`. Thanks to @fxn for the suggestion. [ci skip]
* | | | When Array#as_json and Hash#as_json are called without options, theyGodfrey Chan2013-11-221-2/+2
| | | | | | | | | | | | | | | | | | | | should also call #as_json on the children without options (instead of nil)
* | | | doc `travel` and `travel_to` stubs are removed in teardown. [ci skip]Yves Senn2013-11-211-4/+4
| | | |
* | | | Expand double-negative in String#blank? regexAman Gupta2013-11-201-1/+1
| | | |
* | | | Add `#travel` and `#travel_to` to AS::TestCasePrem Sichanugrist2013-11-202-0/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add `ActiveSupport::Testing::TimeHelpers#travel` and `#travel_to`. These methods change current time to the given time or time difference by stubbing `Time.now` and `Date.today` to return the time or date after the difference calculation, or the time or date that got passed into the method respectively. These methods also accept a block, which will return current time back to its original state at the end of the block. Example for `#travel`: Time.now # => 2013-11-09 15:34:49 -05:00 travel 1.day Time.now # => 2013-11-10 15:34:49 -05:00 Date.today # => Sun, 10 Nov 2013 Example for `#travel_to`: Time.now # => 2013-11-09 15:34:49 -05:00 travel_to Time.new(2004, 11, 24, 01, 04, 44) Time.now # => 2004-11-24 01:04:44 -05:00 Date.today # => Wed, 24 Nov 2004 Both of these methods also accept a block, which will return the current time back to its original state at the end of the block: Time.now # => 2013-11-09 15:34:49 -05:00 travel 1.day do User.create.created_at # => Sun, 10 Nov 2013 15:34:49 EST -05:00 end travel_to Time.new(2004, 11, 24, 01, 04, 44) do User.create.created_at # => Wed, 24 Nov 2004 01:04:44 EST -05:00 end Time.now # => 2013-11-09 15:34:49 -05:00 This module is included in `ActiveSupport::TestCase` automatically.
* | | | rm minitest monkey patchAaron Patterson2013-11-161-17/+0
| | | |
* | | | Unify `cattr_*` interface: allow to pass a block to `cattr_reader`.Alexey Chernenkov2013-11-151-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Example: class A cattr_reader(:defr) { 'default_reader_value' } end A.defr # => 'default_reader_value'
* | | | Improved compatibility with the stdlib JSON gem.Godfrey Chan2013-11-141-3/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, calling `::JSON.{generate,dump}` sometimes causes unexpected failures such as intridea/multi_json#86. `::JSON.{generate,dump}` now bypasses the ActiveSupport JSON encoder completely and yields the same result with or without ActiveSupport. This means that it will **not** call `as_json` and will ignore any options that the JSON gem does not natively understand. To invoke ActiveSupport's JSON encoder instead, use `obj.to_json(options)` or `ActiveSupport::JSON.encode(obj, options)`.
* | | | Clean up `require ‘active_support/deprecation’` and remove circular requireDmitry Vorotilin2013-11-142-3/+0
| | | |
* | | | Get rid of unused variableGuillermo Iguaran2013-11-141-1/+1
| | | |
* | | | Merge pull request #12882 from charliesome/use-rescue-splat-in-suppressGuillermo Iguaran2013-11-131-2/+1
|\ \ \ \ | | | | | | | | | | Use rescue with a splat rather and catching all exceptions and manually filtering in Kernel#suppress