aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
Commit message (Collapse)AuthorAgeFilesLines
...
* | Upgrade to listen 3.0.5, re-enable testsGodfrey Chan2015-11-261-5/+0
| | | | | | | | | | | | | | | | | | | | In listen 3.0.4 and below, the `#stop` method on the notification backends are a no-op, meaning that we are leaking them per test. This ended up triggering another bug in Ruby that causes our builds to fail randomly on CI. listen bug: https://github.com/guard/listen/issues/353 ruby bug: https://bugs.ruby-lang.org/issues/11744
* | Only run listen tests in isolation, for nowGodfrey Chan2015-11-261-0/+5
| | | | | | | | | | | | There is a known issue with the listen tests that casuses files to be incorrectly GC'ed even when they are still in-use. The current is to only run them in isolation to avoid randomly failing our test suite.
* | Remove unused codeWill Jessop2015-11-241-4/+1
| | | | | | | | Looking at the history of this file it seems this code was never actually used.
* | Merge pull request #22348 from kv109/22233_without_deprecationAndrew White2015-11-241-1/+2
|\ \ | | | | | | Fix wrong timezone mapping for Switzerland (no deprecation warn) [22233]
| * | Fix wrong timezone mapping for Switzerland [22233]Kacper Walanus2015-11-151-1/+2
| | |
* | | Test if each_object(singleton_class) works, since JRuby added it.Charles Oliver Nutter2015-11-231-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes #22376. JRuby 9.0.5.0 will support ObjectSpace.each_object against a class's singleton class, since that's essentially just walking an internal subclasses structure we already maintain. This test was too narrow, requiring that each_object support an arbitrary class but only actually needing it to work against a class's singleton. This improves performance of Class.descendants by nearly two orders of magnitude when run against JRuby 9.0.5.0: ```ruby 5.times { puts Benchmark.measure { 100_000.times { Numeric.descendants } } } ``` Before: ``` 11.510000 0.140000 11.650000 ( 10.082384) 9.990000 0.020000 10.010000 ( 9.931233) 10.520000 0.040000 10.560000 ( 10.502978) 10.290000 0.030000 10.320000 ( 10.276027) 10.000000 0.030000 10.030000 ( 9.942429) ``` After: ``` 1.380000 0.040000 1.420000 ( 0.365850) 0.210000 0.000000 0.210000 ( 0.149574) 0.180000 0.020000 0.200000 ( 0.141094) 0.140000 0.000000 0.140000 ( 0.140634) 0.190000 0.010000 0.200000 ( 0.147962) ```
* | | removes the mutex around `changed`Xavier Noria2015-11-221-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This method needs to ensure that if a change happens, it is going to be registered. With this refactor suggested by @matthewd race conditions do not matter because if no file is watched, nothing is done. And as long as some invocation sets the flag to true, it will stay true. The refactor leaves a race condition in which two simultaneous threads that watch some of the files passed do the actual work in `any?`, whereas the mutex guaranteed that was done at most once. But this is considered to be a better tradeoff.
* | | reset the @updated flag before the callback invocationXavier Noria2015-11-211-2/+1
| | |
* | | make the @updated flag atomic in the evented monitorXavier Noria2015-11-211-5/+11
| | | | | | | | | | | | listen is calling us from its own thread, we need to synchronize reads and writes to this flag.
* | | Merge pull request #22332 from grosser/grosser/deprecationRafael França2015-11-206-4/+72
|\ \ \ | | | | | | | | add deprecations for a smooth transition after #22215
| * | | add deprecations for a smooth transition after #22215Michael Grosser2015-11-196-4/+72
| | |/ | |/|
* | | Merge pull request #22336 from tjschuck/enumerable_sum_perfKasper Timm Hansen2015-11-191-1/+1
|\ \ \ | | | | | | | | Change Enumerable#sum to use inject(:sym) specification
| * | | Change Enumerable#sum to use inject(:sym) specificationT.J. Schuck2015-11-191-1/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not only does this make for simpler, more obvious code, it's also more performant: require 'benchmark/ips' module Enumerable def old_sum(identity = 0, &block) if block_given? map(&block).old_sum(identity) else inject { |sum, element| sum + element } || identity end end def new_sum(identity = 0, &block) if block_given? map(&block).new_sum(identity) else inject(:+) || identity end end end summable = (1..100).to_a # sum is 5050 Benchmark.ips do |x| x.report("old_sum") { summable.old_sum } x.report("new_sum") { summable.new_sum } x.compare! end # Calculating ------------------------------------- # old_sum 10.674k i/100ms # new_sum 14.542k i/100ms # ------------------------------------------------- # old_sum 117.350k (± 7.1%) i/s - 587.070k # new_sum 154.712k (± 3.8%) i/s - 785.268k # # Comparison: # new_sum: 154712.1 i/s # old_sum: 117350.0 i/s - 1.32x slower More benchmarks [here](https://gist.github.com/tjschuck/b3fe4e8c812712376648), including summing strings and passing blocks. The performance gains are less for those, but this version still always wins.
* / / Add missing requireMatthew Draper2015-11-191-0/+2
|/ / | | | | | | Fixes #22311
* | Using released concurrent-rubyRafael Mendonça França2015-11-161-1/+1
| |
* | Merge pull request #22215 from grosser/grosser/normalize_keyRafael França2015-11-165-39/+39
|\ \ | | | | | | send normalized keys to the cache backends so they do not need to man…
| * | keep deprecated namespaced_key in case any subclass uses itMichael Grosser2015-11-103-2/+3
| | |
| * | send normalized keys to the cache backends so they do not need to manage ↵Michael Grosser2015-11-105-38/+37
| | | | | | | | | | | | this themselves
| * | Merge pull request #22216 from grosser/grosser/fast-retRafael França2015-11-101-9/+12
| |\ \ | | | | | | | | fast and consistent return when local_cache does not exist
| | * | fast and consistent return when local_cache does not existMichael Grosser2015-11-071-9/+12
| | | |
| * | | Merge pull request #22244 from pacso/time-days-in-yearAndrew White2015-11-103-0/+30
| |\ \ \ | | | | | | | | | | Add days_in_year method to Time class
| | * | | Add days_in_year methodJon Pascoe2015-11-103-0/+30
| | | | |
| * | | | Minor fix in Module#mattr_reader documentationYuri Kasperovich2015-11-091-1/+1
| |/ / /
* | | / Use proper syntax for class method reference.Tyler Hunt2015-11-161-1/+1
| |_|/ |/| |
* | | Fix instance variable not defined warning from Active Support test suiteJuanitoFatas2015-11-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before ./Users/Juan/dev/rails/activesupport/test/file_update_checker_shared_tests.rb:20: warning: instance variable @tmpdir not initialized After No warnings
* | | base (refined) Pathname#ascendant_of? also on Pathname#ascendXavier Noria2015-11-121-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | A small rewrite in a last attempt at writing obvious and portable code without manual string manipulation. Note that Pathname#== uses string comparison on Windows, so if client code passes "C:\foo" and "c:/foo/bar" the predicate won't see the former is an ascendant of the latter. Risky business.
* | | Use the file watcher defined by the app configDharam Gollapudi2015-11-111-1/+1
| | | | | | | | | This can make use of the FileEventedUpdateChecker, if available.
* | | let filter_out_descendants do less passesXavier Noria2015-11-111-9/+9
| | | | | | | | | | | | | | | | | | Whatever the inner loop selects, we already know is a descendant and can be filtered out right away from dirs_sorted_by_nparts to skip useless iterations.
* | | revises the implementation of Pathname#ascendant_of? (in refinement)Xavier Noria2015-11-112-1/+37
| | |
* | | normalizes spacing in a CHANGELOG [ci skip]Xavier Noria2015-11-111-6/+6
| | |
* | | update docs for MessageEncryptor#new to recommend a KDF [ci skip]Paul Kehrer2015-11-111-2/+2
| | |
* | | Add days_in_year methodJon Pascoe2015-11-113-3/+33
| | |
* | | Minor fix in Module#mattr_reader documentationYuri Kasperovich2015-11-111-1/+1
| | |
* | | fast and consistent return when local_cache does not existMichael Grosser2015-11-111-9/+12
| | |
* | | modernizes the test definitions in the file monitors suiteXavier Noria2015-11-111-16/+17
| | |
* | | applies code style guidelinesXavier Noria2015-11-115-14/+14
| | |
* | | simplifies the implementation of #watching?Xavier Noria2015-11-111-16/+12
| | |
* | | simplifies directories_to_watchXavier Noria2015-11-111-7/+4
| | |
* | | registers these changes in the CHANGELOGsXavier Noria2015-11-111-0/+11
| | |
* | | adds a comment about how does filter_out_descendants preserve orderXavier Noria2015-11-111-0/+1
| | |
* | | rewrites bare loop as untilXavier Noria2015-11-111-3/+1
| | |
* | | simplifies the implementation of existing parentXavier Noria2015-11-101-13/+2
| | |
* | | indents private methods as per our guidelinesXavier Noria2015-11-101-28/+28
| | |
* | | renames the module with shared tests for file monitorsXavier Noria2015-11-103-5/+5
| | |
* | | simplifies PathHelper with a Pathname refinementXavier Noria2015-11-101-22/+22
| | |
* | | the evented monitor filters out descendantsXavier Noria2015-11-102-10/+66
| | |
* | | better tmp file management in the monitors suiteXavier Noria2015-11-101-36/+88
| | |
* | | adds another test case in the monitors suiteXavier Noria2015-11-101-1/+17
| | |
* | | editorial pass over test method namesXavier Noria2015-11-091-5/+5
| | |
* | | improves waiting in the file monitors suiteXavier Noria2015-11-093-23/+21
| | |