aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #28446 from y-yagi/move_new_changelog_entry_to_the_topJon Moss2017-03-181-7/+7
|\ | | | | Move new CHANGELOG entry to the top [ci skip]
| * Move new CHANGELOG entry to the top [ci skip]yuuji.yaginuma2017-03-161-7/+7
| |
* | Cleanup documentation fixes (#28460)Vipul A M2017-03-171-2/+2
| |
* | Merge pull request #28445 from denniszelada/feature-documentation-with_optionsVipul A M2017-03-171-0/+11
|\ \ | |/ |/| Add documentation to use with_options anywhere in the same class [ci
| * Add documentation to use with_options in the same class [ci skip]Dennis Zelada2017-03-161-0/+11
| |
* | Fix test warningsAndrew White2017-03-161-5/+5
| |
* | Move `to_time` to `DateTime` compatibility.rb fileAndrew White2017-03-164-6/+16
| | | | | | | | | | | | We are overriding it in `Time` and `ActiveSupport::TimeWithZone` so there's no point in having it in the `DateAndTime::Compatibility` module. Also add some docs for the `to_time` implementations.
* | Merge pull request #28147 from kmcphillips/master-time-freezeAndrew White2017-03-166-22/+206
|\ \ | | | | | | Allow Time#to_time on frozen objects. Return frozen time rather than "RuntimeError: can't modify frozen Time"
| * | Handle #to_time and memoization taking into account memoization, frozen ↵Kevin McPhillips2017-03-066-22/+206
| | | | | | | | | | | | state, and preserve_timezone flag.
* | | Tweak 28412Jon Moss2017-03-151-1/+1
| | | | | | | | | | | | | | | | | | PR was merged before I could finished reviewing :grimacing: [ci skip]
* | | Merge pull request #28425 from rails/remove-duration-deprecationAndrew White2017-03-154-36/+212
|\ \ \ | | | | | | | | Remove implicit coercion deprecation of durations
| * | | Restore 5.minutes changed in #28204Andrew White2017-03-151-1/+1
| | | |
| * | | Remove implicit coercion deprecation of durationsAndrew White2017-03-153-35/+211
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In #28204 we deprecated implicit conversion of durations to a numeric which represented the number of seconds in the duration because of unwanted side effects with calculations on durations and dates. This unfortunately had the side effect of forcing a explicit cast when configuring third-party libraries like expiration in Redis, e.g: redis.expire("foo", 5.minutes) To work around this we've removed the deprecation and added a private class that wraps the numeric and can perform calculation involving durations and ensure that they remain a duration irrespective of the order of operations.
* | | | Merge pull request #28412 from benoittgt/add_doc_for_message_encryptor_newRafael França2017-03-151-0/+5
|\ \ \ \ | |/ / / |/| | | Add documentation about signature_key for MessageEncryptor.new [ci skip]
| * | | Add documentation about signature_key for MessageEncryptor.new [ci skip]Benoit Tigeot2017-03-151-0/+5
| | | |
* | | | Lint activesupport/CHANGELOG.mdJon Moss2017-03-131-8/+10
| | | | | | | | | | | | | | | | [ci skip]
* | | | AS:Cache:MemoryStore doc fixes [ci skip] (#28389)Vipul A M2017-03-121-1/+1
| | | |
* | | | Merge pull request #27051 from devonestes/adding-cache-clear-docsVipul A M2017-03-121-0/+2
|\ \ \ \ | | | | | | | | | | Add missing documentation for MemoryStore#clear [ci skip]
| * | | | Add missing documentation for MemoryStore#clear [ci skip]Devon Estes2016-11-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | We were missing some form of documentation for this method, so I've gone ahead and added some!
* | | | | Fix indentation and formatting in CHANGELOGs [ci skip]Ryuta Kamizono2017-03-111-17/+17
| | | | |
* | | | | Make sure local cache cleared even it's throwing:Lin Jen-Shin2017-03-102-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We (GitLab) hit into an issue that somewhere in the middleware chain was throwing `:warden`, which was caught in the wrapping middleware, but `LocalCache::Middleware` was not aware of it. It should look like: ``` ruby result = catch(:warden) do @app.call(env) end ``` Source: https://github.com/hassox/warden/blob/090ed153dbd2f5bf4a1ca672b3018877e21223a4/lib/warden/manager.rb#L35-L37 Using `ensure` could make sure that we would always do the cleanup, and better yet, avoid `rescue Exception` which we all should know that could cause some issues which could be very hard to debug. Please check the discussion thread for more context: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/1402#note_25128108
* | | | | Fix typo `titlelize` -> `titleize` [ci skip]yuuji.yaginuma2017-03-071-2/+2
| | | | |
* | | | | Update `titlelize` regex to allow apostrophesAndrew White2017-03-063-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 4b685aa the regex in `titlelize` was updated to not match apostrophes to better reflect the nature of the transformation. Unfortunately this had the side effect of breaking capitalization on the first word of a sub-string, e.g: >> "This was 'fake news'".titleize => "This Was 'fake News'" This is fixed by extending the look-behind to also check for a word character on the other side of the apostrophe. Fixes #28312.
* | | | | Add `rfc3339` aliases to `xmlschema`Andrew White2017-03-035-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | For naming consistency when using the RFC 3339 profile of ISO 8601 in applications.
* | | | | Add `Time.rfc3339` parsing methodAndrew White2017-03-033-0/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `Time.xmlschema` and consequently its alias `iso8601` accepts timestamps without a offset in contravention of the RFC 3339 standard. This method enforces that constraint and raises an `ArgumentError` if it doesn't.
* | | | | Add `ActiveSupport::TimeZone.rfc3339` parsing methodAndrew White2017-03-033-0/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously there was no way to get a RFC 3339 timestamp into a specific timezone without either using `parse` or chaining methods. The new method allows parsing directly into the timezone, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.rfc3339("1999-12-31T14:00:00Z") => Fri, 31 Dec 1999 14:00:00 HST -10:00 This new method has stricter semantics than the current `parse` method and will raise an `ArgumentError` instead of returning nil, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.rfc3339("foobar") ArgumentError: invalid date >> Time.zone.parse("foobar") => nil It will also raise an `ArgumentError` when either the time or offset components are missing, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.rfc3339("1999-12-31") ArgumentError: invalid date >> Time.zone.rfc3339("1999-12-31T14:00:00") ArgumentError: invalid date
* | | | | Add `ActiveSupport::TimeZone.iso8601` parsing methodAndrew White2017-03-033-0/+138
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously there was no way to get a ISO 8601 timestamp into a specific timezone without either using `parse` or chaining methods. The new method allows parsing directly into the timezone, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.iso8601("1999-12-31T14:00:00Z") => Fri, 31 Dec 1999 14:00:00 HST -10:00 If the timestamp is a ISO 8601 date (YYYY-MM-DD) then the time is set to midnight, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.iso8601("1999-12-31") => Fri, 31 Dec 1999 00:00:00 HST -10:00 This new method has stricter semantics than the current `parse` method and will raise an `ArgumentError` instead of returning nil, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.iso8601("foobar") ArgumentError: invalid date >> Time.zone.parse("foobar") => nil
* | | | | Fix typo in commentAndrew White2017-03-031-1/+1
| | | | |
* | | | | Deprecate implicit coercion of `ActiveSupport::Duration`Andrew White2017-03-024-6/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently `ActiveSupport::Duration` implicitly converts to a seconds value when used in a calculation except for the explicit examples of addition and subtraction where the duration is the receiver, e.g: >> 2 * 1.day => 172800 This results in lots of confusion especially when using durations with dates because adding/subtracting a value from a date treats integers as a day and not a second, e.g: >> Date.today => Wed, 01 Mar 2017 >> Date.today + 2 * 1.day => Mon, 10 Apr 2490 To fix this we're implementing `coerce` so that we can provide a deprecation warning with the intent of removing the implicit coercion in Rails 5.2, e.g: >> 2 * 1.day DEPRECATION WARNING: Implicit coercion of ActiveSupport::Duration to a Numeric is deprecated and will raise a TypeError in Rails 5.2. => 172800 In Rails 5.2 it will raise `TypeError`, e.g: >> 2 * 1.day TypeError: ActiveSupport::Duration can't be coerced into Integer This is the same behavior as with other types in Ruby, e.g: >> 2 * "foo" TypeError: String can't be coerced into Integer >> "foo" * 2 => "foofoo" As part of this deprecation add `*` and `/` methods to `AS::Duration` so that calculations that keep the duration as the receiver work correctly whether the final receiver is a `Date` or `Time`, e.g: >> Date.today => Wed, 01 Mar 2017 >> Date.today + 1.day * 2 => Fri, 03 Mar 2017 Fixes #27457.
* | | | | Update `DateTime#change` to support usec and nsecAndrew White2017-03-023-16/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adding support for these options now allows us to update the `DateTime#end_of` methods to match the equivalent `Time#end_of` methods, e.g: datetime = DateTime.now.end_of_day datetime.nsec == 999999999 # => true Fixes #21424.
* | | | | Use DEFAULT_CIPHER constant in MessageEncryptorLukas Zapletal2017-03-011-1/+1
| | | | |
* | | | | Add Duration#before and #after as aliases for #ago and #sinceNick Johnstone2017-02-263-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's common in test cases at my job to have code like this: let(:today) { customer_start_date + 2.weeks } let(:earlier_date) { today - 5.days } With this change, we can instead write let(:today) { 2.weeks.after(customer_start_date) } let(:earlier_date) { 5.days.before(today) } Closes #27721
* | | | | AS CHANGELOG Pass [ci skip]Vipul A M2017-02-261-3/+3
| | | | |
* | | | | Fix typo `HashWithIndifferentAcces` to `HashWithIndifferentAccess` [ci skip]Ryuta Kamizono2017-02-251-1/+1
| | | | |
* | | | | Merge pull request #28157 from robin850/hwia-soft-deprecationMatthew Draper2017-02-253-0/+35
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | Soft-deprecate the `HashWithIndifferentAccess` constant
| * | | | | Add few tests for the top level `HashWithIndifferentAccess`Robin Dupret2017-02-251-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This ensures that if we try to hard-deprecate it again in the future, we won't break these behaviors.
| * | | | | Soft-deprecate the top-level HashWithIndifferentAccess classRobin Dupret2017-02-253-0/+12
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | Since using a `ActiveSupport::Deprecation::DeprecatedConstantProxy` would prevent people from inheriting this class and extending it from the `ActiveSupport::HashWithIndifferentAccess` one would break the ancestors chain, that's the best option we have here.
* | | | | Merge pull request #28006 from fareastside/masterRafael Mendonça França2017-02-243-2/+21
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | Allow ActiveSupport::MarshalWithAutoloading#load to take a Proc
| * | | | | add optional second argument to ActiveSupport core extension for ↵Jeff Latz2017-02-243-2/+21
| |/ / / / | | | | | | | | | | | | | | | Marshal#load so it can take a proc
* | | | | Fix CHANGELOG entry position [ci skip]Rafael Mendonça França2017-02-241-2/+3
| | | | |
* | | | | Add missing gzip footer check in ActiveSupport::Gzip.decompressDylan Thacker-Smith2017-02-243-1/+15
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | A gzip file has a checksum and length for the decompressed data in its footer which isn't checked by just calling Zlib::GzipReader#read. Calling Zlib::GzipReader#close must be called after reading to the end of the file causes this check to be done, which is done by Zlib::GzipReader.wrap after its block is called.
* | | | Make HWIA#compact not return nil when no nilsPavel Pravosud2017-02-232-1/+11
| | | |
* | | | Preparing for 5.1.0.beta1 releaseRafael Mendonça França2017-02-232-1/+3
| | | |
* | | | 🙈 :nodoc: `AS::Duration::ISO8601Serializer`Godfrey Chan2017-02-231-1/+1
| |_|/ |/| | | | | This class should not be used directly, the public API is `AS::Duration#iso8601`.
* | | Add more missing requiresAndrew White2017-02-221-0/+1
| | | | | | | | | | | | Further missing requires for Timeout exposed due to Bundler 1.14.5
* | | Add missing requiresAndrew White2017-02-221-0/+4
| | | | | | | | | | | | | | | Bundler 1.14.5 moved to lazily loading 'rubygems/spec_fetcher' which revealed some missing requires from the JSON encoding test file.
* | | Add CHANGELOG entry for #28104Andrew White2017-02-221-0/+4
| | |
* | | Preload to_datetime before freezing a TimeWithZone instanceAdam Rice2017-02-222-1/+3
| | |
* | | Merge pull request #27941 from ↵Kasper Timm Hansen2017-02-201-2/+2
|\ \ \ | | | | | | | | | | | | | | | | y-yagi/prevent_multiple_values_being_set_to_run_via Prevent multiple values being set to `run_via`
| * | | Prevent multiple values being set to `run_via`yuuji.yaginuma2017-02-181-2/+2
| | | | | | | | | | | | | | | | | | | | When executing the test via rake, since `rake` is set for `run_via`, `ruby` should not be set. Related 2cb6c27310452da11b93d729c3b760ce988106e1