aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
Commit message (Collapse)AuthorAgeFilesLines
* Adjust `Module.parent_name` to work when frozen; fixes #27637Corey Ward2017-01-171-2/+4
|
* All currently supported rubies already have LoadError#pathAkira Matsuda2017-01-171-12/+0
|
* :golf: else + if = elsifAkira Matsuda2017-01-171-10/+8
|
* Raise ArgumentError if attempting to transliterate anything that is not a stringKevin McPhillips2017-01-161-0/+2
|
* Revert "Merge pull request #27686 from koic/friendly_bigdecimal_inspect"Kasper Timm Hansen2017-01-151-7/+0
| | | | | | | | | | | | | The exact inspect output of a BigDecimal is out of scope for what we're trying to communicate about `dup` and `duplicable?` here. Adding two examples distracts is disctracting, so keep the docs from before since our minimal version is Ruby 2.2.2. [ Koichi ITO, Jon Moss, Kasper Timm Hansen ] This reverts commit 2163874dedaf83e67599c2930c2686caa165fbad, reversing changes made to 46fdbc5290335ed38fa9fe2b6b0ef8abe4eccb1b.
* Several representation of BigDecimal has changed in Ruby 2.4.0+ [ci skip]Koichi ITO2017-01-151-0/+7
| | | | cf. https://github.com/ruby/bigdecimal/pull/42
* AS::StringInquirer#respond_to_missing? should fallback to superAkira Matsuda2017-01-151-1/+1
| | | | in case String or any other ancestor class' respond_to_missing? was defined.
* Unused &block parameterAkira Matsuda2017-01-151-1/+1
|
* AS::ArrayInquirer#respond_to_missing? should fallback to superAkira Matsuda2017-01-151-1/+1
| | | | in case Array or any other ancestor class' respond_to_missing? was defined.
* class Foo < Struct.new(:x) creates an extra unneeded anonymous classAkira Matsuda2017-01-131-2/+2
| | | | because Struct.new returns a Class, we just can give it a name and use it directly without inheriting from it
* Add duration constructors for use in Numeric extensionsAndrew White2017-01-123-34/+76
| | | | | The Numeric extensions like 1.day, 1.month, etc. shouldn't know how the internals of ActiveSupport::Duration works.
* Merge pull request #27610 from Envek/fix_and_speed_up_duration_parsingAndrew White2017-01-123-15/+26
|\ | | | | Fix inconsistent parsing of Durations with both months and years
| * Fix inconsistent results when parsing large durations and constructing ↵Andrey Novikov2017-01-093-15/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | durations from code ActiveSupport::Duration.parse('P3Y') == 3.years # It should be true Duration parsing made independent from any moment of time: Fixed length in seconds is assigned to each duration part during parsing. Changed duration of months and years in seconds to more accurate and logical: 1. The value of 365.2425 days in Gregorian year is more accurate as it accounts for every 400th non-leap year. 2. Month's length is bound to year's duration, which makes sensible comparisons like `12.months == 1.year` to be `true` and nonsensical ones like `30.days == 1.month` to be `false`. Calculations on times and dates with durations shouldn't be affected as duration's numeric value isn't used in calculations, only parts are used. Methods on `Numeric` like `2.days` now use these predefined durations to avoid duplicating of duration constants through the codebase and eliminate creation of intermediate durations.
* | Make time travel work with subclasses of Time/Date/DatetimeJonas Nicklas2017-01-101-5/+5
|/ | | | | Closes #27614 Previously when calling `now` on a subclass of e.g. `Time` it would return an instance of `Time` instead of returning an instance of the subclass. This way, we always return the correct class.
* Merge pull request #27392 from y-yagi/use_same_class_on_compactSean Griffin2017-01-061-0/+4
|\ | | | | ensure `#compact` of HWIDA to return HWIDA
| * ensure `#compact` of HWIDA to return HWIDAyuuji.yaginuma2017-01-061-0/+4
| | | | | | | | | | | | | | | | `Hash#compact` of Ruby native returns new hash. Therefore, in order to return HWIDA as in the past version, need to define own `#compact` to HWIDA. Related: #26868
* | `self.` is not needed when calling its own instance methodAkira Matsuda2017-01-055-6/+6
| | | | | | | | Actually, private methods cannot be called with `self.`, so it's not just redundant, it's a bad habit in Ruby
* | Fix style guide violationsRafael Mendonça França2017-01-051-1/+1
| |
* | Make sure we generate keys that can be used with the cipherRafael Mendonça França2017-01-041-4/+4
| | | | | | | | | | | | | | | | | | We use aes-256-cbc cipher by default and it only accepts keys with 32 bytes at max. Closes #27576. [ci skip]
* | Merge pull request #26480 from tbrisker/fix-26461Rafael França2017-01-041-2/+7
|\ \ | |/ |/| Clarify that mattr_* creates public methods
| * Reword according to feedbackTomer Brisker2016-09-151-8/+7
| |
| * Clarify that mattr_* creates public methodsTomer Brisker2016-09-131-0/+6
| |
* | There's no such moduleAkira Matsuda2017-01-052-8/+8
| |
* | Remove unnecessary require statementsJon Moss2017-01-031-3/+0
| | | | | | | | Should have been removed via 8e43fc5ace8039370f233570863b34821a3be46f.
* | Merge pull request #27363 from amatsuda/refined_array_sumSean Griffin2017-01-031-2/+7
|\ \ | | | | | | Refining Array#sum monkey-patch using Refinements
| * | Refining Array#sum monkey-patch using RefinementsAkira Matsuda2016-12-151-2/+7
| | | | | | | | | | | | Because we don't want to see our ugly orig_sum method outside of this file
* | | Fix Symbol#duplicable? for Ruby 2.4.0.Kasper Timm Hansen2017-01-011-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ruby 2.4.0 has trouble duplicating certain symbols created from strings via `to_sym`. It didn't happen with `'symbol'.to_sym.dup` for some reason, but works fine with the longer string sample. Once a newer Ruby version with a fix is released we'll get have a failing test case we can fix. Ref: #27532
* | | Bump license years for 2017Jon Moss2016-12-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Per https://www.timeanddate.com/counters/firstnewyear.html, it's already 2017 in a lot of places, so we should bump the Rails license years to 2017. [ci skip]
* | | Prefer Regexp#match? over Regexp#===Matthew Draper2016-12-311-1/+2
| | |
* | | Only add regexes for the new wordsMatthew Draper2016-12-311-2/+3
| | |
* | | Fix Rubocop violations and fix documentation visibilityRafael Mendonça França2016-12-281-1/+1
| | | | | | | | | | | | | | | | | | Some methods were added to public API in 5b14129d8d4ad302b4e11df6bd5c7891b75f393c and they should be not part of the public API.
* | | Privatize unneededly protected methods in Active SupportAkira Matsuda2016-12-2415-56/+46
| | |
* | | No need to nodoc private methodsAkira Matsuda2016-12-245-10/+10
| | |
* | | Describe what we are protectingAkira Matsuda2016-12-231-0/+2
| | |
* | | Fix Complex and Rational are duplicable?utilum2016-12-211-0/+20
| | | | | | | | | | | | See [this test](https://gist.github.com/utilum/78918f1b64f8b61ee732cb266db7c43a).
* | | `protected` here doesn't protect anythingAkira Matsuda2016-12-191-2/+0
| | | | | | | | | | | | there aren't any instance method defined in this class
* | | Merge pull request #27368 from matthewd/doubled-callbacksMatthew Draper2016-12-161-3/+9
|\ \ \ | |/ / |/| | Support double-yield inside an around callback
| * | Support double-yield inside an around callbackMatthew Draper2016-12-151-3/+9
| | | | | | | | | | | | | | | | | | | | | It's questionable whether this is a good thing -- it forces any later/ inner callback to handle multiple invocations, along with the actual wrapped action. But it worked prior to 871ca21f6a1d65c0ec78cb5a9641411e2210460b, so we shouldn't break it unintentionally.
* | | Fix constantize edge case involving prepend, autoloading and name conflictsJean Boussier2016-12-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the following situation: ```ruby class Bar end module Baz end class Foo prepend Baz end class Foo::Bar end ``` Running `Inflector.constantize('Foo::Bar')` would blow up with a NameError. What is happening is that `constatize` was written before the introduction of prepend, and wrongly assume that `klass.ancestors.first == klass`. So it uses `klass.ancestors.inject` without arguments, as a result a prepended module is used in place of the actual class.
* | | change return value of `duplicable?` with Ruby 2.4+yuuji.yaginuma2016-12-131-33/+58
| | | | | | | | | | | | | | | | | | | | | `NilClass`, `FalseClass`, `TrueClass`, `Symbol` and `Numeric` can dup with Ruby 2.4+. Ref: https://bugs.ruby-lang.org/issues/12979
* | | Keep AS::XmlMini::PARSING["decimal"].call('') returning 0Akira Matsuda2016-12-131-1/+11
|/ / | | | | | | | | BigDecimal('an invalid string') has changed its behavior to raise an ArgumentError since 1.3.0 https://bugs.ruby-lang.org/issues/10286
* | split DELEGATION_RESERVED_METHOD_NAMES in halfToshimaru2016-12-091-4/+5
| |
* | stop using removed `render :text`yuuji.yaginuma2016-12-031-2/+2
| | | | | | | | Follow up to 79a5ea9eadb4d43b62afacedc0706cbe88c54496
* | Exclude singleton classes from `subclasses` and `descendants`Sean Griffin2016-12-011-0/+1
| | | | | | | | | | | | | | | | This behavior changed in Ruby starting with 2.3.0, as a result of https://bugs.ruby-lang.org/issues/11360. This results in a change in behavior of these methods which is likely undesirable. Fixes #27238
* | Merge pull request #27206 from kirs/fix-testing-isolation-2Matthew Draper2016-12-011-7/+8
|\ \ | | | | | | Fix arguments passing in testing isolation
| * | Fix arguments passing in testing isolationKir Shatrov2016-11-301-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The issue affects MRI 2.2.5, MRI 2.3.3, JRuby 9.1.6.0. It can be reproduced by: ``` $ cd activemodel $ NO_FORK=1 bundle exec rake test ``` If we wrap original arguments in quotes, it will be considered as a one big single argument. Later, [`rake/rake_test_loader.rb`](https://github.com/ruby/rake/blob/7863b97/lib/rake/rake_test_loader.rb#L15) will iterate over ARGS and try to require that huge single "argument" (which is a list of multiple .rb files). This leads to an exception: ``` /Users/kir/Project s/opensource/rails/vendor/bundle/gems/rake-11.3.0/lib/rake/rake_test_loader.rb:15:in `require': cannot load such file -- /Users/kir/Projects/opensource/rails/activemodel/test/cases/ attribute_assignment_test.rb [stripped] /Users/kir/Projects/opensource/rails/activemodel/test/cases/validations/with_validation_test.rb /Users/kir/Projects/opensource/rails/activemodel/test/cases/validations_test .rb (LoadError) from /Users/kir/Projects/opensource/rails/vendor/bundle/gems/rake-11.3.0/lib/rake/rake_test_loader.rb:15:in `block in <main>' from /Users/kir/Projects/opensource/rails/vendor/bundle/gems/rake-11.3.0/lib/rake/rake_test_loader.rb:4:in `select' from /Users/kir/Projects/opensource/rails/vendor/bundle/gems/rake-11.3.0/lib/rake/rake_test_loader.rb:4:in `<main>' ``` Originally quotes were introduced in https://github.com/rails/rails/pull/19819 to fix MRI 2.2.2. The fix solves issue on all affected platforms: MRI 2.2.5, MRI 2.3.3, JRuby 9.1.6.0.
* | | Missing require 'active_support/notifications'Akira Matsuda2016-11-301-0/+1
| | |
* | | Treat combined durations as a single unitSean Griffin2016-11-291-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this commit, `3.months - 3.months` would result in a duration that has the "parts" of `[[:months, 3], [:months, -3]]`. This would mean that it was subtly different than `2.months - 2.months`. When applied to a time, the date might actually change if the resulting day doesn't exist however many months in the future, even though in both cases we just wanted to add `0`, which should always be an identity operation. With this change, we now store the parts as a hash, so `3.months - 3.months` is simply stored as `{ months: 0 }`.
* | | Merge pull request #26874 from tgxworld/fix_broadcast_loggerMatthew Draper2016-11-251-2/+2
|\ \ \ | | | | | | | | `Broadcast#silence` breaks custom loggers that do not include `Logg…
| * | | `Broadcast#silence` breaks custom loggers that does not include `LoggerSilence`.Guo Xiang Tan2016-10-241-2/+2
| | | |