aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
Commit message (Collapse)AuthorAgeFilesLines
* Fix typo in Delegation#delegate_missing_to doc [skip ci]Anton Davydov2016-08-271-1/+1
|
* Move custom assertion to its proper placeSantosh Wadghule2016-08-272-11/+11
| | | | | | | | ActiveSupport::Testing::Assertions. We have a separate module in which have defined Rails' own custom assertions. So it would be good to keep all custom Rails' assertions in one place i.e. in this module.
* Merge pull request #25628 from ysksn/optionsRafael Mendonça França2016-08-173-5/+5
|\ | | | | | | Remove parameter "options = nil" for #clear
| * Update CHANGELOG.md for #25628 [ci skip]Yosuke Kabuto2016-07-023-5/+5
| | | | | | | | | | | | Move new CHANGELOG entry top [ci skip] Remove parameter "options = nil" for #clear
* | Add three new rubocop rulesRafael Mendonça França2016-08-1623-39/+39
| | | | | | | | | | | | | | | | Style/SpaceBeforeBlockBraces Style/SpaceInsideBlockBraces Style/SpaceInsideHashLiteralBraces Fix all violations in the repository.
* | Merge pull request #25570 from y-yagi/remove_useless_parameterEileen M. Uchitelle2016-08-151-3/+3
|\ \ | | | | | | remove useless parameter
| * | remove useless parameteryuuji.yaginuma2016-06-291-4/+4
| | |
* | | Add documentation about `ActiveSupport.on_load`mrageh2016-08-131-0/+2
| | | | | | | | | | | | | | | | | | | | | [ci skip] This commit adds some docs that explain how `LazyLoadHooks.on_load` method works.
* | | let instance thread_mattr_* methods delegate to the class-level onesXavier Noria2016-08-081-4/+10
| | | | | | | | | | | | | | | | | | | | | This code has too much duplication and the rationale for the concatenation may not be obvious to the reader. You define the ones at class-level, explain why does the code concatenates there, and then the convenience ones at instance-level just delegate.
* | | Merge pull request #25681 from willnet/fix-thread_mattr_accessorYves Senn2016-08-081-4/+4
|\ \ \ | | | | | | | | | | | | Fix `thread_mattr_accessor` share variable superclass with subclass
| * | | Fix `thread_mattr_accessor` share variable superclass with subclasswillnet2016-08-041-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | damn typos [ci skip]Xavier Noria2016-08-081-1/+1
| | | |
* | | | explain why aliasing uses explicit selfs [ci skip]Xavier Noria2016-08-081-0/+3
| | | |
* | | | code gardening: removes redundant selfsXavier Noria2016-08-0812-18/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A few have been left for aesthetic reasons, but have made a pass and removed most of them. Note that if the method `foo` returns an array, `foo << 1` is a regular push, nothing to do with assignments, so no self required.
* | | | Add `Style/EmptyLines` in `.rubocop.yml` and remove extra empty linesRyuta Kamizono2016-08-073-3/+0
| | | |
* | | | applies remaining conventions across the projectXavier Noria2016-08-0624-107/+91
| | | |
* | | | normalizes indentation and whitespace across the projectXavier Noria2016-08-0629-995/+992
| | | |
* | | | modernizes hash syntax in activesupportXavier Noria2016-08-0619-86/+86
| | | |
* | | | applies new string literal convention in activesupport/libXavier Noria2016-08-06175-704/+704
|/ / / | | | | | | | | | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* | | Add :weeks to the list of variable duration partsAndrew White2016-08-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | Add documentation for ActiveSupport::StringInquirer [ci skip]kyatul2016-08-031-0/+6
| | |
* | | Revert "Adds `not_in?` onto Object"David Heinemeier Hansson2016-07-292-16/+0
| | |
* | | Add rationale for manually checking auth_tag length, which got lost when ↵Bart de Water2016-07-271-0/+4
| | | | | | | | | | | | #25874 was squashed before merging [skip ci]
* | | Merge pull request #25914 from jmccartie/jm/not_inRafael França2016-07-222-0/+16
|\ \ \ | | | | | | | | Adds `not_in?` onto Object
| * | | Adds `not_in?` onto ObjectJon McCartie2016-07-212-0/+16
| | | |
* | | | revises a regexpXavier Noria2016-07-221-1/+1
| | | | | | | | | | | | | | | | The exclamation mark is not a metacharacter.
* | | | systematic revision of =~ usage in ASXavier Noria2016-07-2211-17/+25
| | | | | | | | | | | | | | | | | | | | Where appropriate prefer the more concise Regexp#match?, String#include?, String#start_with?, and String#end_with?
* | | | adds require for Regexp#match?Xavier Noria2016-07-221-0/+2
| | | |
* | | | revises styleXavier Noria2016-07-221-1/+1
|/ / /
* | | performance boost for String#blank? in Ruby 2.4Xavier Noria2016-07-221-1/+1
| | | | | | | | | | | | | | | | | | Some casual benchmarks showed a 2x factor. All credit goes to @nurse.
* | | define Range#match? if Ruby < 2.4Xavier Noria2016-07-221-0/+4
| | | | | | | | | | | | | | | | | | 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-4/+37
| | | | | | | | | | | | | | | | | | 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-0/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-2/+8
| | |
* | | Merge pull request #25790 from mrageh/wrap-lazy-load-hooks-in-moduleRafael França2016-07-131-18/+26
|\ \ \ | | | | | | | | Wrap module around lazy load hooks
| * | | Wrap module around lazy load hooksmrageh2016-07-121-18/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix for issue https://github.com/rails/rails/issues/25784 Prior to this commit the lazy_load_hooks.rb file contained important lazy load hooks. Since [7c90d91](https://github.com/rails/rails/commit/7c90d91c3c43bdbba25d38589aed0e2940af3bc8) the [documentation](http://api.rubyonrails.org/files/activesupport/lib/active_support/lazy_load_hooks_rb.html) did not display the comments in this file as the docs for load hooks. This commit wraps the code within this file in a module so we can display the documentation for `ActiveSupport` load hooks. By extending `ActiveSupport` with this module, all the methods within it should still be accessible through `ActiveSupport`.
* | | | Missing require 'active_support/multibyte/unicode'Akira Matsuda2016-07-121-0/+1
| | | |
* | | | Raise ArgumentError for bad strptime argumentsJohn Gesimondo2016-07-111-0/+1
|/ / /
* | | AS::Duration should serialize empty values correctly. (#25656)Paul Sadauskas2016-07-111-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation serializes zero-length durations incorrectly (it serializes as `"-P"`), and cannot un-serialize itself: ``` [1] pry(main)> ActiveSupport::Duration.parse(0.minutes.iso8601) ActiveSupport::Duration::ISO8601Parser::ParsingError: Invalid ISO 8601 duration: "-P" is empty duration from /Users/rando/.gem/ruby/2.3.1/gems/activesupport-5.0.0/lib/active_support/duration/iso8601_parser.rb:96:in `raise_parsing_error' ``` Postgres empty intervals are serialized as `"PT0S"`, which is also parseable by the Duration deserializer, so I've modified the `ISO8601Serializer` to do the same. Additionally, the `#normalize` function returned a negative sign if `parts` was blank (all zero). Even though this fix does not rely on the sign, I've gone ahead and corrected that, too, in case a future refactoring of `#serialize` uses it.
* | | Update class_attribute docsJohn Gesimondo2016-07-101-1/+1
| | |
* | | `travel/travel_to` travel time helpers, now raise on nested calls,Vipul A M2016-07-021-8/+43
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge pull request #25344 from matthewd/debug-locksMatthew Draper2016-07-022-5/+49
|\ \ | | | | | | ActionDispatch::DebugLocks
| * | Provide a middleware to debug misbehaving locksMatthew Draper2016-06-102-5/+49
| | | | | | | | | | | | | | | Only intended to be enabled when in use; by necessity, it sits above any reasonable access control.
* | | Merge pull request #24146 from matthewd/latch-as-proxyMatthew Draper2016-07-021-5/+12
|\ \ \ | | | | | | | | Don't inherit from Concurrent::CountDownLatch
| * | | Don't inherit from Concurrent::CountDownLatchMatthew Draper2016-03-111-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That class mangles .new, which interferes with our deprecation warning. More generally, it suggests we shouldn't be subclassing without a very good reason, and avoiding one allocation doesn't seem to meet that criteria. In passing, recommend the simpler Concurrent::Event for the common count=1 case.
* | | | Merge pull request #25600 from pan/constantize-docfixVipul A M2016-07-011-4/+4
|\ \ \ \ | | | | | | | | | | fix ActiveSupport::Infector.constantize usage API doc [ci skip]
| * | | | fix ActiveSupport::Infector.constantize usage API doc [ci skip]Pan GaoYong2016-06-301-4/+4
| | |_|/ | |/| |
* / | | Partially revert #25192Matthew Draper2016-07-011-6/+6
|/ / / | | | | | | | | | | | | | | | KeyGenerator is used in other contexts, and we cannot change its output... even if it does accidentally default to generating excess key material for our primary internal usage.
* | | We default to using aes-256-cbc as our verification/signing cipher. It can ↵Vipul A M2016-06-271-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | accept key lengths of 128, 192 or 256-bit, whereas currently we were providing twice the acceptable value. ruby < 2.4 allowed accepting these values, as extra key bits were ignored. Since https://github.com/ruby/ruby/commit/ce635262f53b760284d56bb1027baebaaec175d1 this now has a strict checking on key length. Default to key length 32 bytes, to match the compatible length for aes-256-cbc Fixes #25185
* | | Define `Pathname#as_json`Ryunosuke Sato2016-06-251-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the Pathname object is converted as JSON, it should be a string that means itself. Expected: ``` >> Pathname.new('/path/to/somewhere.txt').as_json "/path/to/somewhere.txt" ``` Actual: ``` >> Pathname.new('/path/to/somewhere.txt').as_json {"path"=>"/path/to/somewhere.txt"} ```