aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
Commit message (Collapse)AuthorAgeFilesLines
* Add aliases for reverse_merge to with_defaultsMatt Casper2017-03-293-0/+29
| | | | | | In the context of controller parameters, reverse_merge is commonly used to provide defaults for user input. Having an alias to reverse_merge called with_defaults feels more idiomatic for Rails.
* Use keyword arguments instead of hashRafael Mendonça França2017-03-282-9/+11
|
* Merge pull request #28480 from ↵Rafael Mendonça França2017-03-285-21/+81
|\ | | | | | | | | | | mubashirhanif/add_keep_id_suffix_option_to_humanize_new Add keep id suffix option to humanize new
| * Added options hash to titleize method and keep_id_suffix option to humanizeMubashir Hanif2017-03-215-21/+81
| | | | | | | | | | | | | | | | | | | | | | | | some documentation remove extra whitespace. Added id in the middle test case and corrected some testcases. Some Coding standard guidelines corrections as suggested by codeclimate. Some more corrections suggested by codeclimate.
* | starts_with? is removed in Ruby 2.4Rafael Mendonça França2017-03-281-1/+1
| |
* | Merge pull request #1 from radiospiel/tickets/26955-listen-pathsRafael Mendonça França2017-03-281-0/+5
|\ \ | | | | | | | | | No longer listens to dirs outside of the app directory.
| * | No longer listens to dirs inside of installed gemseno2016-11-081-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rails5 uses the listen gem to watch for changes from autoload directories and from i18n directories. Changes there would be reflected by the running app, in development mode usually. However, files outside of the application directory or locally installed gems should not change during development, and rails does not need to reflect changes there if they do. This change makes sure only those paths that do not originate from the app itself are watched. This can help especially with the situation on OSX, where rb-fsevent - which implements file watching - is quite a resource hog.
* | | Return unmapped timezones from `country_zones`Andrew White2017-03-282-5/+16
| | | | | | | | | | | | | | | | | | | | | If a country doesn't exist in the MAPPINGS hash then create a new `ActiveSupport::Timezone` instance using the supplied timezone id. Fixes #28431.
* | | minor CHANGELOG formatting changes. [ci skip]Yves Senn2017-03-261-1/+0
| | |
* | | Fix doc format for `duplicable?` [ci skip]yuuji.yaginuma2017-03-251-6/+6
| | |
* | | Remove unnecessary ruby version comments [ci skip]Vipul A M2017-03-241-2/+2
| | |
* | | Fix duplicable? for Ratiional and Complex on ruby master, since they are now ↵Vipul A M2017-03-232-13/+26
| | | | | | | | | | | | duplicable
* | | No need to have an entry that was included in 5.1 in 5.2Rafael Mendonça França2017-03-221-11/+0
| | | | | | | | | | | | [ci skip]
* | | Add AS::Deprecation::DeprecatedConstantAccessorDominic Cleal2017-03-224-0/+86
| | | | | | | | | | | | | | | | | | | | | An alternative to DeprecatedConstantProxy which works more transparently with exceptions because it returns the object that the new constant refers to rather than a proxy. This is then compatible with `rescue OldException`.
* | | Start Rails 5.2 developmentMatthew Draper2017-03-223-631/+4
| | |
* | | 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