aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | Fixes Inflector#titleize to work with SafeBufferBrian McManus2015-03-203-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The way Inflector#titleize was implemented did not work properly when called on a SafeBuffer object. Using the global `$&` variable in the gsub resulted in calling capitalize on a nil object for reasons I still do not fully understand. Removing the UNSAFE_STRING_METHODS override for the gsub method in SafeBuffer "fixed" the bug but is obviously unacceptable. An example of this is very easy to see in rails console: ActiveSupport::SafeBuffer.new("my test").titleize > NoMethodError: undefined method `capitalize' for nil:NilClass Using the non global version of gsub with a |match| arg passed to the block fixes the problem. Again I do not quite understand why. I noticed that other parts of Inflector were already using the standard block arg version of gsub so I don't think it should be a problem to convert this method to using it as well.
* | | | | Merge pull request #24930 from henrik/date-all-daySean Griffin2016-05-163-5/+22
|\ \ \ \ \ | | | | | | | | | | | | Introduce Date#all_day
| * | | | | Introduce Date#all_dayHenrik Nyh2016-05-113-5/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Useful for queries like: Item.where(created_at: Date.current.all_day) There was already a Time#all_day with the same behaviour, but for queries like the above, Date is more convenient.
* | | | | | Action Mailer: Declarative exception handling with `rescue_from`.Jeremy Daer2016-05-153-57/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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`.
* | | | | | Remove unnecessary constantYosuke Kabuto2016-05-151-4/+2
| | | | | |
* | | | | | Add some assertions for BigDecimal#to_sYosuke Kabuto2016-05-151-0/+2
| |_|_|/ / |/| | | |
* | | | | Perfomance fix for Enumerable#index_bylvl0nax2016-05-141-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calculating ------------------------------------- before 34.731k i/100ms after 48.206k i/100ms ------------------------------------------------- before 508.451k (± 1.2%) i/s - 2.570M after 720.068k (± 0.9%) i/s - 3.615M Comparison: after: 720067.6 i/s before: 508451.1 i/s - 1.42x slower
* | | | | - Added clarity to documentation of ArrayInquirer#any? [ci skip]Mohit Natoo2016-05-111-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Added clarity to documentation of ArrayInquirer#any? [ci skip] - Added clarity to documentation of ArrayInquirer#any? [ci skip]
* | | | | Bump the deprecation horizonRafael Mendonça França2016-05-102-2/+2
| | | | |
* | | | | Start Rails 5.1 development :tada:Rafael Mendonça França2016-05-102-766/+3
|/ / / /
* | | | Use original `Array#sum` to speed up calculatingyui-knk2016-05-071-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use original `Array#sum` when calculating Numeric sum. This commit is related #24804 issue. Issue #24804 reports `Array#sum` becomes much slower when ActiveSupport is included. This commit tries to use original method as far as possible. ```shell $ cat array_sum.rb class Array alias core_sum sum end require 'benchmark/ips' require 'active_support/core_ext/enumerable' ary = [1.0] * 1_000_000 Benchmark.ips do |x| x.report("core sum") { ary.core_sum } x.report("AS's sum") { ary.sum } x.compare! end $ bundle exec ruby -v -I lib array_sum.rb ruby 2.4.0dev (2016-05-01 master 54867) [x86_64-darwin14] Calculating ------------------------------------- core sum 4.000 i/100ms AS's sum 5.000 i/100ms ------------------------------------------------- core sum 50.492 (± 7.9%) i/s - 252.000 AS's sum 50.116 (± 6.0%) i/s - 250.000 Comparison: core sum: 50.5 i/s AS's sum: 50.1 i/s - 1.01x slower ``` Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
* | | | Preparing for 5.0.0.rc1 releaseRafael Mendonça França2016-05-062-1/+3
| | | |
* | | | Array#split refactoring for case with blocklvl0nax2016-05-061-11/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calculating ------------------------------------- before 26.319k i/100ms after 29.414k i/100ms ------------------------------------------------- before 350.623k (± 1.6%) i/s - 1.763M after 416.227k (± 1.4%) i/s - 2.088M Comparison: after: 416226.8 i/s before: 350622.8 i/s - 1.19x slower
* | | | Run Active Support tests when preserving timezonesAndrew White2016-05-051-0/+3
| | | | | | | | | | | | | | | | | | | | Add to the matrix of Travis tests an entry that runs the Active Support tests when `ActiveSupport.to_time_preserves_timezone = true`.
* | | | Fix tests when preserving timezonesAndrew White2016-05-052-6/+19
| | | | | | | | | | | | | | | | | | | | | | | | These two tests are explicitly testing that to_time is returning times with the sytem timezone's UTC offset, therefore they will fail when running them with `ActiveSupport.to_time_preserves_timezone = true`.
* | | | Fix to_yaml test when run individuallyAndrew White2016-05-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The to_yaml method is undefined when running the test as: $ ruby -I lib:test test/core_ext/string_ext_test.rb Doesn't fail when running rake test:isolated presumably because something else has required 'yaml' already.
* | | | Fix some typos in comments.Joe Rafaniello2016-05-041-1/+1
| | | | | | | | | | | | | | | | [ci skip]
* | | | Fix template resolver cache concurrency: "can't add a new key into hash ↵Jeremy Daer2016-05-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | during iteration" Resolved by https://github.com/ruby-concurrency/concurrent-ruby/pull/529 Fixes #24627.
* | | | Fix initial value effects for sum along to ruby 2.4Kenta Murata2016-04-302-5/+85
| | | | | | | | | | | | | | | | Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
* | | | restores the regexp used in String#blank?Xavier Noria2016-04-291-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit undoes 54243fe. Reason: Further investigation has shown the benefit is not so clear generally speaking. There is a long discussion and several benchmarks in the PR #24658 if you are interested in the details.
* | | | AS::Duration changelog polishJeremy Daer2016-04-291-15/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the updated changelog from the first merge: 7254517 References #22806, #24762. [ci skip]
* | | | Merge branch 'master' of github.com:rails/docrailsVijay Dev2016-04-291-2/+2
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | Conflicts: guides/source/configuring.md
| * | | | [ci skip] Aline results of code examples in commentsyui-knk2016-04-201-2/+2
| | | | |
* | | | | Change 1.week to create 1 week durations instead of 7 days durations.Andrey Novikov2016-04-284-11/+47
| | | | | | | | | | | | | | | | | | | | This is just to remove astonishment from getting `3600 seconds` from typing `1.hour`.
* | | | | Prep Rails 5 beta 4eileencodes2016-04-272-1/+3
| | | | |
* | | | | Revert "Change 1.week to create 1 week durations instead of 7 days durations."Jeremy Daer2016-04-274-34/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Regression: adding minutes/hours to a time would change its time zone This reverts commit 1bf9fe75a6473cb7501cae544cab772713e68cef.
* | | | | Merge pull request #24723 from lvl0nax/array_split_fixJeremy Daer2016-04-262-10/+14
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | Little perfomance fix for Array#split.
| * | | | | Little perfomance fix for Array#split.lvl0nax2016-04-262-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calculating ------------------------------------- before 40.770k i/100ms after 58.464k i/100ms ------------------------------------------------- before 629.568k (± 5.0%) i/s - 3.180M after 1.159M (± 4.5%) i/s - 5.788M
* | | | | | Do not cache ActiveSupport::TimeZone#utc_offsetAlexey Shein2016-04-253-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This can be an issue when TZInfo::TimeZone#current_period is refreshed due to timezone period transition, but it's not reflected in ActiveSupport::TimeZone object. For example, on Sun, 26 Oct 2014 22:00 UTC, Moscow changed its TZ from MSK +04:00 to MSK +03:00 (-1 hour). If ActiveSupport::TimeZone['Moscow'] happens to be initialized just before the timezone transition, it will cache its stale utc_offset even after the timezone transition. This commit removes cache and fixes this issue. Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
* | | | | | Add require of mattr_accessor since Compatibility relies on it.Jason Frey2016-04-251-0/+2
|/ / / / / | | | | | | | | | | | | | | | | | | | | Follow up to https://github.com/rails/rails/commit/c9c5788a527b70d7f983e2b4b47e3afd863d9f48
* | | | | Remove `Array#sum` method before override ityui-knk2016-04-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To suppress warning ('warning: method redefined; discarding old sum') remove the method before override it. Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
* | | | | rewords code comment [ci skip]Xavier Noria2016-04-241-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This alternative flows better. [Richard Schneeman & Xavier Noria]
* | | | | Share lock: more accurate livelock fix for aa598f4Jeremy Daer2016-04-241-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Awaken waiting threads even if the current thread (the previously exclusive thread) hadn't taken a share lock. This only happens in code that wasn't run within an executor, since that always take an outermost share lock.
* | | | | Share lock: avoid livelock due to exclusive thread sleeping before waiting ↵Jeremy Daer2016-04-231-0/+1
| | | | | | | | | | | | | | | | | | | | threads wake
* | | | | Follow up of ↵Vipul A M2016-04-242-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://github.com/rails/rails/commit/c9c5788a527b70d7f983e2b4b47e3afd863d9f48 [ci skip]
* | | | | Make getlocal and getutc always return instances of TimeAndrew White2016-04-236-23/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-233-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | Mirrors the Time#subsec method by returning the fraction of the second as a Rational.
* | | | | Change Time#sec_fraction to use subsecAndrew White2016-04-232-2/+16
| | | | | | | | | | | | | | | | | | | | Time instances can have fractional parts smaller than a nanosecond.
* | | | | Add additional aliases for DateTime#utcAndrew White2016-04-232-0/+7
| | | | |
* | | | | Add CHANGELOG entry for #24700Andrew White2016-04-231-0/+5
| | | | |
* | | | | Add Time#sec_fractionAndrew White2016-04-232-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | Mirrors the DateTime#sec_fraction method by returning the fraction of the second as a Rational.
* | | | | Move `DateTime#getlocal` to `/core_ext/date_time/calculations.rb`yui-knk2016-04-232-11/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `DateTime#getlocal` is newly added public API. It's responsible is same as `DateTime#utc`, so `calculations.rb` is a best plase to define this method. For keeping consistency with `DateTime#utc`, defines `#localtime` and defines `getlocal` as an alias method.
* | | | | Add compatibility for Ruby 2.4 `to_time` changesAndrew White2016-04-2312-7/+197
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | fix boot performance issueAaron Patterson2016-04-221-12/+10
| | | | | | | | | | | | | | | | | | | | | | | | | Slight refactor to improve boot performance on some Ruby implementations (for now).
* | | | | just say nothing about why this regexp is slower [ci skip]Xavier Noria2016-04-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Further investigation seems to disprove that backtracking is the reason why the positive variant is slower, see https://github.com/rails/rails/pull/24658#issuecomment-213079710 so, just say nothing about it, only assert it is slower.
* | | | | Make file update checker tests more resilient on WindowsSean Griffin2016-04-211-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Without the `wdm` gem, it appears that `listen` keeps an open handle to each of these files, causing them not to be removed when the tempdir tries to clean iteslf up, and then directory to fail to unlink. In addition to fixing that particular failure, we now construct OS agnostic paths, and capture exceptions if the directory fails to unlink so that minitest will report it rather than crash
* | | | | restores code comments in String#blank? [ci skip]Xavier Noria2016-04-211-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When you come here without context, it is important to hightlight that checking the predicate is worthwhile due to the observation that blank strings are often empty. So you complicate the code (which has a cost in terms of readability and aesthetics), but statistically makes sense. Then, you also need to explain why the second operand is so convoluted. Otherwise, you wonder why this line is written precisely this way. That is what code comments are for.
* | | | | Merge pull request #24663 from kamipo/remove_unused_blank_reJeremy Daer2016-04-201-2/+0
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | Remove unused `BLANK_RE`
| * | | | | Remove unused `BLANK_RE`Ryuta Kamizono2016-04-211-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | Follow up to #24658.
* | | | | | Update delegate to use newer Ruby syntaxTodd Lynam2016-04-201-5/+2
|/ / / / / | | | | | | | | | | This commit updates `delegate` to use the keyword argument syntax added in Ruby 2. I left the `ArgumentError` when `to` is missing, because it better explains how to correctly use `delegate`. We could instead rely on the default `ArgumentError` that would be raised if `to` were a required keyword argument.