aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | Add support for Petabyte and Exabyte in number to human sizeAkshay Vishnoi2015-12-224-1/+7
| |/ / / /
* | | | | fix typo on commentsPaulo Ancheta2015-12-231-1/+1
| | | | |
* | | | | Merge pull request #20507 from rabbitt/bugfix/logger-threadsafetyRafael França2015-12-232-2/+36
|\ \ \ \ \ | | | | | | | | | | | | Fixes LoggerSilence#silence threadsafety
| * | | | | Fixes LoggerSilence#silence threadsafetyCarl P. Corliss2015-12-232-2/+36
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - uses instance defined level if no custom local log level defined - Keeps track of local log level per [ thread + object-instance ] - prevents memory leakage by removing local level hash key/value on #silence method exit - avoids the use of Thread local variables
* / / / / Add caveat to number_to_currency docs [ci skip]Derek Prior2015-12-231-0/+8
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I've worked on a few applications that have gone through the internationalization process and had issues because they were using `number_to_currency`. The minute a user is allowed to change their locale, they can change the price displayed on a page from 10 US dollars to 10 Mexican Pesos, which is far from the same amount of money. Unlike other helpers that rely on i18n, `number_to_currency` does not produce equivalent results when the locale is changed. As I've explained this to a few groups of developers now, I thought it might make for a good caveat in the docs.
* | | | Use CGI.escapeHTML for html escapeTakashi Kokubun2015-12-211-4/+2
| | | |
* | | | Merge pull request #22581 from hirocaster/fix-expect-sample-codeYves Senn2015-12-211-4/+5
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | [ci skip] Change output timming of sample code
| * | | | Change output timming of sample codehirocaster2015-12-141-2/+2
| | | | | | | | | | | | | | | | | | | | - Expect returns "new value 1" but, retuns nil, because output at thread is not finished. Move val_1 output to finished thread.
* | | | | Fix documentation for mattr_accessor methodsJan Habermann2015-12-201-6/+6
| | | | |
* | | | | Add a commend about deprecation of ActiveSupport::OrderedHashRafael Mendonça França2015-12-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is in the code to provides backward compatibility for people that have this class serialized as YAML in some storage. Closes #22681
* | | | | Deprecation warning now targets at 5.1Akira Matsuda2015-12-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Also, added a test case to make sure that the default deprecation horizon is always bigger than the current Rails version.
* | | | | Merge pull request #22479 from RobinClowers/fix-cache-notification-orderKasper Timm Hansen2015-12-191-8/+8
|\ \ \ \ \ | |_|_|_|/ |/| | | | Fix cache fetch miss notification order
| * | | | Fix cache fetch miss notification orderRobin Clowers2015-12-021-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes https://github.com/rails/rails/issues/22477. When I improved the caching instrumentation in edd33c08d98723ae9bb89cf7f019277117ed6414, I inadvertently changed the order of AS notifications when there is a cache miss.
* | | | | Change `alpha` to `beta1` to prep for release of Rails 5eileencodes2015-12-181-1/+1
| | | | | | | | | | | | | | | | | | | | :tada: :beers:
* | | | | [ci skip] Revert most of ff851017Kasper Timm Hansen2015-12-181-2/+2
| | | | | | | | | | | | | | | We went back to `Thread.current[]` in 33e11e59.
* | | | | Revert "Use Thread.current.thread_variable_set/get insetad of the direct ↵David Heinemeier Hansson2015-12-181-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | accessors" This reverts commit 301f43820562c6a70dffe30f4227ff0751f47d4f per @matthewd on https://github.com/rails/rails/pull/22630/files#r47997074
* | | | | [ci skip] Add `Thread.current` to match internalsKasper Timm Hansen2015-12-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We call the thread variable accessors on `Thread.current`, which matches Ruby's documentation: http://ruby-doc.org/core-2.2.0/Thread.html#method-i-thread_variable_get Fix these to stay `current` ( ͡° ͜ʖ ͡°)
* | | | | Clarify thread_mattr_accessor subclass behavior documentationNate Berkopec2015-12-171-8/+9
| | | | | | | | | | | | | | | | | | | | [ci skip]
* | | | | Copy-edit the Per Thread attribute accessor documentationRafael Mendonça França2015-12-171-3/+3
| | | | | | | | | | | | | | | | | | | | [ci skip]
* | | | | Use Thread.current.thread_variable_set/get insetad of the direct accessorsDavid Heinemeier Hansson2015-12-171-4/+4
| | | | |
* | | | | Fix typo in thread_mattr_accessor doco [ci skip]Nate Berkopec2015-12-171-1/+1
| | | | |
* | | | | Add thread_m/cattr_accessor/reader/writer suite of methods for declaring ↵David Heinemeier Hansson2015-12-173-0/+144
| | | | | | | | | | | | | | | | | | | | class and module variables that live per-thread
* | | | | Merge pull request #22592 from nwjsmith/disable-logger-message-broadcastsEileen M. Uchitelle2015-12-162-5/+8
|\ \ \ \ \ | | | | | | | | | | | | Add Logger option to disable message broadcasts
| * | | | | Add Logger option to disable message broadcastsNate Smith2015-12-162-5/+8
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When setting the Rails logger to log to STDOUT, it would broadcast the log twice in development. This adds a setting that will prevent messages from being broadcast to multiple logs, while still allowing calls to `#close`, `#level=`, `#progname=`, and `#formatter=` to be broadcasted. Fixes #14769, #11415
* | | | | Merge pull request #22556 from imanel/range_prependKasper Timm Hansen2015-12-161-10/+7
|\ \ \ \ \ | | | | | | | | | | | | Use Module.prepend instead of alias_method for Range#to_s
| * | | | | Use Module.prepend instead of alias_method for Range#to_sBernard Potocki2015-12-161-10/+7
| | | | | |
* | | | | | Don't leak Object constants in core_ext/module/qualified_constGenadi Samokovarov2015-12-161-12/+30
| | | | | |
* | | | | | Merge pull request #22605 from tonyta/delete-dead-commentsRafael França2015-12-161-1/+0
|\ \ \ \ \ \ | | | | | | | | | | | | | | Delete dead code comments
| * | | | | | delete code commented out (and replaced) in e93d0a5Tony Ta2015-12-151-1/+0
| | |/ / / / | |/| | | |
* | | | | | Merge pull request #22598 from yui-knk/deprecate_string_callbackRafael França2015-12-161-1/+8
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Deprecate passing string to define callback.
| * | | | | Deprecate passing string to define callback.yui-knk2015-12-161-1/+8
| |/ / / /
* / / / / lazy load listen in coreXavier Noria2015-12-131-1/+4
|/ / / / | | | | | | | | | | | | See the rationale in the comment present in this patch.
* | | | Correct the time comparison for remember_me tokenJeffrey Warren2015-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | Corrects the time comparison to be `Time.now < time` which allows the user to be set only when the current time is less than the 2 week window given in the example.
* | | | renames AS::FileEventedUpdateChecker to AS::EventedFileUpdateCheckerXavier Noria2015-12-091-1/+1
| | | | | | | | | | | | | | | | Better English.
* | | | Merge pull request #22428 from thedarkone/subs-notifEileen M. Uchitelle2015-12-062-4/+9
|\ \ \ \ | | | | | | | | | | Subscribing to notifications while inside the said instrumented section
| * | | | Subscribing to notifications while inside the said instrumented section.thedarkone2015-11-282-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The issue is that on the exit from Instrumenter#instrument section, an Evented listener will run into an error because its thread local (Thread.current[:_timestack]) has not been set up by the #start method (this obviously happens because the Evented listeners didn't exist at the time, since no subscribtion to that section was made yet). Note: support for subscribing to instrumented sections, while being inside those instrumented sections, might be removed in the future. Maybe fixes #21873.
* | | | | Merge pull request #22202 from grosser/grosser/write-consistentArthur Nogueira Neves2015-12-051-4/+4
|\ \ \ \ \ | |_|/ / / |/| | | | even if a write fails, store the raw value
| * | | | even if a write fails, store the raw valueMichael Grosser2015-11-291-4/+4
| |/ / /
* | | | Merge pull request #22361 from grosser/grosser/rescueArthur Nogueira Neves2015-11-301-26/+19
|\ \ \ \ | |/ / / |/| | | rescue memcached errors in a consistent way
| * | | rescue memcached errors in a consistent wayMichael Grosser2015-11-291-26/+19
| | | |
* | | | 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-204-4/+36
|\ \ \ \ | | | | | | | | | | add deprecations for a smooth transition after #22215
| * | | | add deprecations for a smooth transition after #22215Michael Grosser2015-11-194-4/+36
| | |/ / | |/| |
* | | | 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.