aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/CHANGELOG.md
Commit message (Collapse)AuthorAgeFilesLines
* Fix Complex and Rational are duplicable?utilum2016-12-211-0/+5
| | | | See [this test](https://gist.github.com/utilum/78918f1b64f8b61ee732cb266db7c43a).
* change return value of `duplicable?` with Ruby 2.4+yuuji.yaginuma2016-12-131-0/+6
| | | | | | | `NilClass`, `FalseClass`, `TrueClass`, `Symbol` and `Numeric` can dup with Ruby 2.4+. Ref: https://bugs.ruby-lang.org/issues/12979
* remove duplicated changelog entry [ci skip]yuuji.yaginuma2016-11-151-4/+0
|
* Merge pull request #27035 from rails/remove-active-support-deprecationsAndrew White2016-11-141-0/+73
|\ | | | | Remove Active Support deprecations
| * Remove deprecated class ActiveSupport::Concurrency::LatchAndrew White2016-11-141-0/+4
| |
| * Remove deprecated separator argument from parameterizeAndrew White2016-11-141-0/+4
| |
| * Remove deprecated method Numeric#to_formatted_sAndrew White2016-11-141-0/+4
| |
| * Remove deprecated method alias_method_chainAndrew White2016-11-141-0/+4
| |
| * Remove deprecated constant MissingSourceFIleAndrew White2016-11-141-0/+4
| |
| * Remove deprecated Module.qualified_const_get/set/defined?Andrew White2016-11-141-0/+5
| |
| * Update CHANGELOGAndrew White2016-11-131-0/+48
| |
* | Revert "Merge pull request #25811 from oss92/to_sentence_fallback_string"Rafael Mendonça França2016-11-141-6/+0
|/ | | | | | | | This reverts commit bad3a120f1690f393d8f6204b3ceee60f0ce707b, reversing changes made to 2384317465ccb1dfca456a2b7798714b99f32711. Reason: Adding a new option in the API for something that can be done with a `#presence` check could do.
* Ensure duration parsing is consistent across DST changesAndrew White2016-10-311-0/+20
| | | | | | | | | | | | | | | | | | Previously `ActiveSupport::Duration.parse` used `Time.current` and `Time#advance` to calculate the number of seconds in the duration from an arbitrary collection of parts. However as `advance` tries to be consistent across DST boundaries this meant that either the duration was shorter or longer depending on the time of year. This was fixed by using an absolute reference point in UTC which isn't subject to DST transitions. An arbitrary date of Jan 1st, 2000 was chosen for no other reason that it seemed appropriate. Additionally, duration parsing should now be marginally faster as we are no longer creating instances of `ActiveSupport::TimeWithZone` every time we parse a duration string. Fixes #26941.
* Use Hash#compact and Hash#compact! from Ruby 2.4Prathamesh Sonpatki2016-10-231-2/+7
| | | | | | - Ruby 2.4 has added Hash#compact and Hash#compact! so we can use it now. - Reference: https://bugs.ruby-lang.org/issues/11818 and https://bugs.ruby-lang.org/issues/12863.
* Fix `ActiveSupport::TimeZone#strptime` cannot parse timestamps (%Q, %s)denisovlev2016-10-211-0/+7
|
* Fix copy_time_to: Copy nsec instead of usecJosua Schmid2016-10-201-0/+6
| | | | | | | | | | | | | `copy_time_to` is a helper function for date and time calculations. It's being used by `prev_week`, `next_week` and `prev_weekday` to keep the time fraction when jumping around between days. Previously the nanoseconds part was lost during the operation. This lead to problems in practice if you were using the `end_of_day` calculation. Resulting in the time fraction of `end_of_day` not being the same as next week's `end_of_day`. With this fix `copy_time_to` doesn't forget the `nsec` digits.
* Revert "Merge pull request #26677 from tbalthazar/26644"Andrew White2016-10-021-22/+0
| | | | | | | | Turns out trying to cache on localtime with arguments is too hard so we'll do it on DateAndTime::Compatibility#to_time instead. This reverts commit 9ce2d1b1a43fc4ef3db59849b7412d30583a4074, reversing changes made to 53ede1aff2025d4391d0e05ba471fdaf3110a99c.
* Fix `ActiveSupport::TimeWithZone#localtime`Thomas Balthazar2016-10-011-0/+22
| | | | | | | | | | | | | | | | | Previously memoization in `localtime` wasn't taking the `utc_offset` parameter into account when returning a cached value. It now caches the computed value depending on the `utc_offset` parameter, e.g: Time.zone = "US/Eastern" t = Time.zone.local(2016,5,2,11) # => Mon, 02 May 2016 11:00:00 EDT -04:00 t.localtime(-7200) # => 2016-05-02 13:00:00 -0200 t.localtime(-3600) # => 2016-05-02 14:00:00 -0100
* Fix ActiveSupport::TimeWithZone#inThomas Balthazar2016-09-241-0/+19
| | | | | | | | | | | | | | | Previously calls to `in` were being sent to the non-DST aware method `Time#since` via `method_missing`. It is now aliased to the DST aware `ActiveSupport::TimeWithZone#+` which handles transitions across DST boundaries, e.g: Time.zone = "US/Eastern" t = Time.zone.local(2016,11,6,1) # => Sun, 06 Nov 2016 01:00:00 EDT -05:00 t.in(1.hour) # => Sun, 06 Nov 2016 01:00:00 EST -05:00
* Merge pull request #25628 from ysksn/optionsRafael Mendonça França2016-08-171-0/+6
|\ | | | | | | Remove parameter "options = nil" for #clear
| * Update CHANGELOG.md for #25628 [ci skip]Yosuke Kabuto2016-07-021-0/+6
| | | | | | | | | | | | Move new CHANGELOG entry top [ci skip] Remove parameter "options = nil" for #clear
* | Pass over changelogs [ci skip]Vipul A M2016-08-101-3/+3
| |
* | Merge pull request #25681 from willnet/fix-thread_mattr_accessorYves Senn2016-08-081-0/+28
|\ \ | | | | | | | | | Fix `thread_mattr_accessor` share variable superclass with subclass
| * | Fix `thread_mattr_accessor` share variable superclass with subclasswillnet2016-08-041-0/+7
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation of `thread_mattr_accessor` set variable sharing superclass with subclass. So the method doesn't work as documented. Precondition class Account thread_mattr_accessor :user end class Customer < Account end Account.user = "DHH" Account.user #=> "DHH" Customer.user = "Rafael" Customer.user # => "Rafael" Documented behavior Account.user # => "DHH" Actual behavior Account.user # => "Rafael" Current implementation set variable statically likes `Thread[:attr_Account_user]`, and customer also use it. Make variable name dynamic to use own thread-local variable.
* | Add :weeks to the list of variable duration partsAndrew White2016-08-031-0/+8
| | | | | | | | | | | | | | | | Since 434df00 week durations are no longer converted to days. This means we need to add :weeks to the parts that ActiveSupport::TimeWithZone will consider being of variable duration to take account of DST transitions. Fixes #26039.
* | Revert "Adds `not_in?` onto Object"David Heinemeier Hansson2016-07-291-12/+0
| |
* | Merge pull request #25914 from jmccartie/jm/not_inRafael França2016-07-221-0/+12
|\ \ | | | | | | Adds `not_in?` onto Object
| * | Adds `not_in?` onto ObjectJon McCartie2016-07-211-0/+12
| | |
* | | the infamous typo only seen in GitHub's diff [ci skip]Xavier Noria2016-07-221-1/+1
|/ /
* | define Range#match? if Ruby < 2.4Xavier Noria2016-07-221-2/+8
| | | | | | | | | | | | See the rationale in the documentation included in this patch. We are going to gradually introduce this predicate in the code base.
* | Allow MessageEncryptor to take advantage of authenticated encryption modesBart de Water2016-07-211-0/+9
| | | | | | | | | | | | AEAD modes like `aes-256-gcm` provide both confidentiality and data authenticity, eliminating the need to use MessageVerifier to check if the encrypted data has been tampered with. Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
* | Introduce `assert_changes` and `assert_no_changes`Genadi Samokovarov2016-07-171-9/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Those are assertions that I really do miss from the standard `ActiveSupport::TestCase`. Think of those as a more general version of `assert_difference` and `assert_no_difference` (those can be implemented by assert_changes, should this change be accepted). Why do we need those? They are useful when you want to check a side-effect of an operation. `assert_difference` do cover a really common case, but we `assert_changes` gives us more control. Having a global error flag? You can test it easily with `assert_changes`. In fact, you can be really specific about the initial state and the terminal one. ```ruby error = Error.new(:bad) assert_changes -> { Error.current }, from: nil, to: error do expected_bad_operation end ``` `assert_changes` follows `assert_difference` and a string can be given for evaluation as well. ```ruby error = Error.new(:bad) assert_changes 'Error.current', from: nil, to: error do expected_bad_operation end ``` Check out the test cases if you wanna see more examples. :beers:
* | Added :fallback_string option to Array#to_sentenceoss922016-07-131-0/+6
| |
* | Raise ArgumentError for bad strptime argumentsJohn Gesimondo2016-07-111-0/+9
| |
* | `travel/travel_to` travel time helpers, now raise on nested calls,Vipul A M2016-07-021-0/+25
|/ | | | | | | | | | | | | | | | | | | | | | | | | as this can lead to confusing time stubbing. Instead of: travel_to 2.days.from_now do # 2 days from today travel_to 3.days.from_now do # 5 days from today end end preferred way to achieve above is: travel_to 2.days.from_now # 2 days from today travel_back travel_to 5.days.from_now # 5 days from today Closes #24690 Fixes #24689
* Clearify CHANGELOG for #23011 [ci skip]Godfrey Chan2016-06-271-2/+6
|
* Merge pull request #23011 from arnvald/bugfix/correctly_parse_dateGodfrey Chan2016-06-251-0/+5
|\ | | | | | | Use correct timezone when parsing date in json
| * Use correct timezone when parsing date in jsonGrzegorz Witek2016-01-221-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | Fixes https://github.com/rails/rails/issues/22171 Time specified in ISO 8601 format without `Z` should be considered as local time, yet until now it was treated as UTC. This commit fixes problem by parsing time using timezone specified in application config. The downside of this solution is performance hit (`Time.zone.parse` is ~ 1.6x slower than `Time.parse`), so maybe there's a better solution.
* | Update changelog for #25341Kevin McPhillips2016-06-221-0/+6
| |
* | Remove deprecated arguments in assert_nothing_raisedRafael Mendonça França2016-06-131-0/+4
| |
* | Don't blank pad day of the month when formatting datesSean Griffin2016-06-021-0/+7
| | | | | | | | | | | | | | | | | | | | | | We are currently using `%e` which adds a space before the result if the digit is a single number. This leads to strings like `February 2, 2016` which is undesireable. I've opted to replace with 0 padding instead of removing the padding entirely, to preserve compatibility for those relying on the fact that the width is constant, and to be consistent with time formatting. Fixes #25251.
* | Merge pull request #23930 from gsamokovarov/module-delegate-missing-toRafael Mendonça França2016-05-241-0/+47
|\ \ | | | | | | | | | Introduce Module#delegate_missing_to
| * | Introduce Module#delegate_missing_toGenadi Samokovarov2016-02-271-0/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building decorators, a common pattern may emerge: class Partition def initialize(first_event) @events = [ first_event ] end def people if @events.first.detail.people.any? @events.collect { |e| Array(e.detail.people) }.flatten.uniq else @events.collect(&:creator).uniq end end private def respond_to_missing?(name, include_private = false) @events.respond_to?(name, include_private) end def method_missing(method, *args, &block) @events.send(method, *args, &block) end end With `Module#delegate_missing_to`, the above is condensed to: class Partition delegate_missing_to :@events def initialize(first_event) @events = [ first_event ] end def people if @events.first.detail.people.any? @events.collect { |e| Array(e.detail.people) }.flatten.uniq else @events.collect(&:creator).uniq end end end David suggested it in #23824.
* | | Action Mailer: Declarative exception handling with `rescue_from`.Jeremy Daer2016-05-151-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Follows the same pattern as controllers and jobs. Exceptions raised in delivery jobs (enqueued by `#deliver_later`) are also delegated to the mailer's rescue_from handlers, so you can handle the DeserializationError raised by delivery jobs: ```ruby class MyMailer < ApplicationMailer rescue_from ActiveJob::DeserializationError do … end ``` ActiveSupport::Rescuable polish: * Add the `rescue_with_handler` class method so exceptions may be handled at the class level without requiring an instance. * Rationalize `exception.cause` handling. If no handler matches the exception, fall back to the handler that matches its cause. * Handle exceptions raised elsewhere. Pass `object: …` to execute the `rescue_from` handler (e.g. a method call or a block to instance_exec) against a different object. Defaults to `self`.
* | | Start Rails 5.1 development :tada:Rafael Mendonça França2016-05-101-764/+1
| | |
* | | Preparing for 5.0.0.rc1 releaseRafael Mendonça França2016-05-061-0/+2
| | |
* | | AS::Duration changelog polishJeremy Daer2016-04-291-15/+13
| | | | | | | | | | | | | | | | | | | | | | | | Use the updated changelog from the first merge: 7254517 References #22806, #24762. [ci skip]
* | | Change 1.week to create 1 week durations instead of 7 days durations.Andrey Novikov2016-04-281-0/+22
| | | | | | | | | | | | This is just to remove astonishment from getting `3600 seconds` from typing `1.hour`.
* | | Prep Rails 5 beta 4eileencodes2016-04-271-0/+2
| | |
* | | Revert "Change 1.week to create 1 week durations instead of 7 days durations."Jeremy Daer2016-04-271-20/+0
| | | | | | | | | | | | | | | | | | Regression: adding minutes/hours to a time would change its time zone This reverts commit 1bf9fe75a6473cb7501cae544cab772713e68cef.