aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
Commit message (Collapse)AuthorAgeFilesLines
* prefer __dir__ over __FILE__ in File.expand_pathXavier Noria2016-08-111-1/+3
| | | | | | Thinking .. relative to files is not natural, we are used to think "parent of a directory", and we have __dir__ nowadays.
* 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-083-4/+48
|\ | | | | | | Fix `thread_mattr_accessor` share variable superclass with subclass
| * Fix `thread_mattr_accessor` share variable superclass with subclasswillnet2016-08-043-8/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-0815-28/+28
| | | | | | | | | | | | | | | | | | 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-0717-23/+0
| |
* | applies remaining conventions across the projectXavier Noria2016-08-0636-132/+102
| |
* | normalizes indentation and whitespace across the projectXavier Noria2016-08-0672-1595/+1587
| |
* | remove redundant curlies from hash argumentsXavier Noria2016-08-0611-40/+40
| |
* | modernizes hash syntax in activesupportXavier Noria2016-08-0657-1040/+1040
| |
* | applies new string literal convention to the rest of the projectXavier Noria2016-08-062-19/+19
| | | | | | | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* | applies new string literal convention in the gemspecsXavier Noria2016-08-061-16/+16
| | | | | | | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* | applies new string literal convention in activesupport/testXavier Noria2016-08-06141-2632/+2632
| | | | | | | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* | applies new string literal convention in activesupport/libXavier Noria2016-08-06176-705/+705
|/ | | | | 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-033-1/+41
| | | | | | | | 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-294-81/+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-224-0/+81
|\ | | | | Adds `not_in?` onto Object
| * Adds `not_in?` onto ObjectJon McCartie2016-07-214-0/+81
| |
* | revises a regexpXavier Noria2016-07-221-1/+1
| | | | | | | | The exclamation mark is not a metacharacter.
* | systematic revision of =~ usage in ASXavier Noria2016-07-2217-29/+43
| | | | | | | | | | 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
| |
* | the infamous typo only seen in GitHub's diff [ci skip]Xavier 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-223-2/+36
| | | | | | 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-213-4/+64
| | | | | | 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>
* Merge pull request #25823 from mechanicles/missing-memory-store-testsRafael França2016-07-201-0/+10
|\ | | | | Add missing tests for memory store of cache.
| * Add missing tests for memory store of cache.Santosh Wadghule2016-07-171-0/+10
| |
* | Merge pull request #25393 from gsamokovarov/introduce-assert-changesRafael França2016-07-203-9/+236
|\ \ | | | | | | Introduce `assert_changes` and `assert_no_changes`
| * | Introduce `assert_changes` and `assert_no_changes`Genadi Samokovarov2016-07-173-9/+236
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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:
* | | Merge pull request #25822 from ↵Rafael França2016-07-201-0/+12
|\ \ \ | | | | | | | | | | | | | | | | mechanicles/clear-local-cache-on-invalid-parameters-error Add missing test for clearing up local cache on invalid parameters error.
| * | | Add missing test for clearing up local cache on invalid parameters err.Santosh Wadghule2016-07-171-0/+12
| | |/ | |/| | | | | | | | | | Add missing test for clearing up local cache and check response should be present on invalid parameters error.
* | | Make sure the time method is unstubedRafael Mendonça França2016-07-171-29/+41
| |/ |/| | | | | | | | | The minitest stubs were conflicting with the time travel stubs so the travel_back method call in the teardown block was actually keeping the time stubbed.
* | Added :fallback_string option to Array#to_sentenceoss922016-07-133-3/+20
|/
* 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`.
* | Remove old test that check duplicated items in the load pathRafael Mendonça França2016-07-131-16/+0
| | | | | | | | | | | | This test was added to protect the test suite from our mistakes but now it is failing because bundler does add duplicated libs in the load path by design (if the repository has more than one gem)
* | Missing require 'active_support/multibyte/unicode'Akira Matsuda2016-07-121-0/+1
| |
* | Raise ArgumentError for bad strptime argumentsJohn Gesimondo2016-07-113-0/+17
|/
* AS::Duration should serialize empty values correctly. (#25656)Paul Sadauskas2016-07-112-1/+4
| | | | | | | | | | | | | 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
|
* Merge pull request #25736 from voxik/file-store-test-require-pathnameRafael França2016-07-071-0/+2
|\ | | | | Pathname might not be always initialized.
| * Pathname might not be always initialized.Vít Ondruch2016-07-071-0/+2
| | | | | | | | Require 'pathname' explicitly
* | Merge pull request #24890 from vipulnsward/travel-to-raiseKasper Timm Hansen2016-07-053-8/+111
|\ \ | | | | | | `travel/travel_to` travel time helpers, now raise on nested calls
| * | `travel/travel_to` travel time helpers, now raise on nested calls,Vipul A M2016-07-023-8/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 #25678 from voxik/DRY-downloaderRafael França2016-07-044-65/+36
|\ \ \ | | | | | | | | Dry downloader