aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Improving `in_time_zone` docs [ci skip]amitkumarsuroliya2015-09-131-2/+1
| | | | | | | | | `DateTime.utc` is not a valid method. It gives `NoMethodError: undefined method `utc` for DateTime:Class`. As we know that we can calculate `utc` time from `Time` Class, but we can’t calculate `utc` time from `DateTime` Class.
* | | Improve String#strip_heredocJuanito Fatas2015-09-121-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Saves about 6 MB, about 40% faster. **strip_heredoc.rb** ```ruby require "active_support/core_ext/object/try" require "get_process_mem" class String def strip_heredoc indent = scan(/^[ \t]*(?=\S)/).min.try(:size) || 0 gsub(/^[ \t]{#{indent}}/, '') end end if ENV["MEASURE_MEMORY"] == "yes" mem = GetProcessMem.new GC.start GC.disable 10000.times do <<-MSG.strip_heredoc xhr and xml_http_request methods are deprecated in favor of `get :index, xhr: true` and `post :create, xhr: true` MSG end before = mem.mb after = mem.mb GC.enable puts "Before: #{before} MiB" puts "After: #{after} MiB" puts "Diff: #{after - before} MiB" end ``` **patched_strip_heredoc.rb** ```ruby require "active_support/core_ext/object/try" require "get_process_mem" class String def patched_strip_heredoc gsub(/^#{scan(/^[ \t]*(?=\S)/).min}/, "".freeze) end end if ENV["MEASURE_MEMORY"] == "yes" mem = GetProcessMem.new GC.start GC.disable 10000.times do <<-MSG.patched_strip_heredoc xhr and xml_http_request methods are deprecated in favor of `get :index, xhr: true` and `post :create, xhr: true` MSG end before = mem.mb after = mem.mb GC.enable puts "Before: #{before} MiB" puts "After: #{after} MiB" puts "Diff: #{after - before} MiB" end ``` **Before** ``` $ MEASURE_MEMORY=yes ruby strip_heredoc.rb Before: 44.73828125 MiB After: 44.7734375 MiB Diff: 0.03515625 MiB ``` **After** ``` $ MEASURE_MEMORY=yes ruby patched_strip_heredoc.rb Before: 37.9765625 MiB After: 38.015625 MiB Diff: 0.0390625 MiB ``` `44.7734375 - 38.015625 = 6.75` => **Saves about 6.75 MiB** **benchmark.rb** ```ruby require "benchmark/ips" require_relative "./strip_heredoc" require_relative "./patched_strip_heredoc" def original <<-MSG.strip_heredoc xhr and xml_http_request methods are deprecated in favor of `get :index, xhr: true` and `post :create, xhr: true` MSG end def patched <<-MSG.patched_strip_heredoc xhr and xml_http_request methods are deprecated in favor of `get :index, xhr: true` and `post :create, xhr: true` MSG end Benchmark.ips do |x| x.report("original") { original } x.report(" patched") { patched } x.compare! end ``` ``` $ ruby -v benchmark.rb ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14] Calculating ------------------------------------- original 5.652k i/100ms patched 6.477k i/100ms ------------------------------------------------- original 54.076k (± 5.7%) i/s - 271.296k patched 74.557k (± 6.2%) i/s - 375.666k Comparison: patched: 74557.0 i/s original: 54076.4 i/s - 1.38x slower ``` => **About 38% faster** 1. Clone rails project `git clone git@github.com:rails/rails.git` 2. Apply this patch to `activesupport/lib/active_support/core_ext/string/strip.rb` 3. `cd activesupport` 4. run `rake` 5. And tests passed: ``` ➜ activesupport $ rake /Users/Juan/.rubies/ruby-2.2.2/bin/ruby -w -I"lib:test" "/Users/Juan/.rubies/ruby-2.2.2/lib/ruby/2.2.0/rake/rake_test_loader.rb" "test/**/*_test.rb" ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ........................................................................ ......................................................................S. SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS Finished in 15.343004s, 214.2344 runs/s, 24902.4898 assertions/s. 3287 runs, 382079 assertions, 0 failures, 0 errors, 48 skips You have skipped tests. Run with --verbose for details. ```
* | | Merge pull request #21567 from y-yagi/fix_inspect_docZachary Scott2015-09-091-1/+1
|\ \ \ | | | | | | | | fix wrong method used in the TimeWithZone#inspect method docs [ci skip]
| * | | fix wrong method used in the TimeWithZone#inspect method docs [ci skip]yuuji.yaginuma2015-09-101-1/+1
| |/ /
* | | Merge pull request #20921 from pboling/fix-sql-colors-in-log-subscriberRafael Mendonça França2015-09-091-1/+1
|\ \ \ | | | | | | | | | | | | Fix and Improve sql logging coloration in `ActiveRecord::LogSubscriber`.
| * | | Improve sql logging coloration in `ActiveRecord::LogSubscriber`.Peter Boling2015-07-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Improves coloring for statements like: # Become WHITE SELECT * FROM ( SELECT * FROM mytable FOR UPDATE ) ss WHERE col1 = 5; LOCK TABLE table_name IN ACCESS EXCLUSIVE MODE; # Becomes RED ROLLBACK - Reinstates the coloration of the `payload[:name]`. Instead of simple alternating colors, adds meaning: - `MAGENTA` for `"SQL"` or `blank?` payload names - `CYAN` for Model Load/Exists - Introduces specs for sql coloration. - Introduces specs for payload name coloration. GH#20885
* | | | Rails documentation use american english.[ci skip]ravindra kumar kumawat2015-09-091-1/+1
| |/ / |/| |
* | | Fixed Time conversion example for UTC time zone [ci skip]Ronak Jangir2015-09-081-1/+1
| | |
* | | Merge pull request #20534 from qnm/activesupport-require-issueYves Senn2015-09-071-0/+1
|\ \ \ | | | | | | | | Add require to ensure Time#advance works without implicit required
| * | | Add missing require to ensure #advance will work without being implicity ↵Rob Sharp2015-06-121-0/+1
| | | | | | | | | | | | | | | | required
* | | | Removed Extra ‘the’ [ci skip]Ronak Jangir2015-09-061-1/+1
| | | |
* | | | Update Unicode Version to 8.0.0Anshul Sharma2015-09-042-1/+1
| | | |
* | | | docs, make `blank?` behavior clear. Closes #21468. [ci skip]Yves Senn2015-09-021-2/+2
| | | |
* | | | Merge pull request #21467 from yui-knk/doc/subscribeZachary Scott2015-09-021-2/+2
|\ \ \ \ | | | | | | | | | | [ci skip] Add description about which object
| * | | | [ci skip] Add description about which objectyui-knk2015-09-021-2/+2
| | |_|/ | |/| | | | | | | | | | `ActiveSupport::Notifications.subscribe` expects as second parameter.
* / | | ArrayInquirer to correctly find symbols or stringsLeigh Halliday2015-08-281-1/+1
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | The problem existed where if your ArrayInquirer values were strings but you checked them using any? with a symbol, it would not find the value. Now it will correctly check whether both the String form or the Symbol form are included in the Array. `
* | | Tiny documentation improvements [ci skip]Robin Dupret2015-08-281-5/+6
| | |
* | | - Extracted `DELIMITED_REGEX` to `delimited_regex` method and made use of ↵Vipul A M2015-08-282-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | user passed `options[:delimited_regex]` if available. Changed `DELIMITED_REGEX` to `DEFAULT)DELIMITED_REGEX` to signify what it means. - Added tests for number to delimited and number to currency in both actionview and activesupport. Changes Changes
* | | 10X speed improvements for AS::Dependencies.loadable_constants_for_pathJean Boussier2015-08-271-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the autoload_paths start to grows, this methods is quite a hotspot >> ActiveSupport::Dependencies.autoload_paths.size => 49 >> Benchmark.ips { |x| x.report('baseline') { ActiveSupport::Dependencies.loadable_constants_for_path(File.expand_path('app/models/shop')) }} Calculating ------------------------------------- baseline 90.000 i/100ms ------------------------------------------------- baseline 1.073k (±20.2%) i/s - 4.950k After the patch Calculating ------------------------------------- patched 883.000 i/100ms ------------------------------------------------- patched 11.050k (±19.7%) i/s - 50.331k
* | | Fixed to_datetime docs [ci skip]Ronak Jangir2015-08-261-2/+3
| | |
* | | Merge pull request #21281 from ronakjangir47/added_docsRafael Mendonça França2015-08-251-1/+10
|\ \ \ | | | | | | | | Added docs for TimeWithZone [ci skip]
| * | | Added docs for TimeWithZone [ci skip]Ronak Jangir2015-08-181-1/+10
| | | |
* | | | use `caller_locations` instead of `caller`Aaron Patterson2015-08-242-3/+14
| | | | | | | | | | | | | | | | | | | | We have `caller_locations`, so we don't need to parse the strings in the callstack.
* | | | minor documentation improvement [ci skip]Sam Auciello2015-08-241-2/+2
| | | |
* | | | temp files are no more requireGaurav Sharma2015-08-251-2/+0
| | | | | | | | | | | | `:nail_care:`
* | | | Merge branch 'master' of github.com:rails/railsVijay Dev2015-08-2431-159/+273
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | Conflicts: guides/source/security.md
| * \ \ \ Merge pull request #16245 from byroot/more-atomic-writeMatthew Draper2015-08-211-27/+29
| |\ \ \ \ | | | | | | | | | | | | File renaming should be the last operation of an atomic write
| | * | | | File renaming should be the last operation of an atomic writeJean Boussier2015-08-201-27/+29
| | | | | |
| * | | | | Merge pull request #21300 from jonahb/cacheYves Senn2015-08-201-1/+1
| |\ \ \ \ \ | | | | | | | | | | | | | | Correct cache store superclass in comment [ci skip]
| | * | | | | Correct cache store superclass in commentJonah Burke2015-08-191-1/+1
| | | |/ / / | | |/| | |
| * | | | | Merge pull request #21279 from ronakjangir47/test_cleanupKasper Timm Hansen2015-08-201-2/+4
| |\ \ \ \ \ | | |/ / / / | |/| | | | Cleaned up generators tests using internal assertion helper
| | * | | | Cleaned up generators tests using internal assertion helperRonak Jangir2015-08-201-2/+4
| | |/ / /
| * / / / Use == 0 instead of .zero? in #tryJean Boussier2015-08-171-1/+1
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The perf gain is relatively minor but consistent: ``` Calculating ------------------------------------- 0.zero? 137.091k i/100ms 1.zero? 137.350k i/100ms 0 == 0 142.207k i/100ms 1 == 0 144.724k i/100ms ------------------------------------------------- 0.zero? 8.893M (± 6.5%) i/s - 44.280M 1.zero? 8.751M (± 6.4%) i/s - 43.677M 0 == 0 10.033M (± 7.0%) i/s - 49.915M 1 == 0 9.814M (± 8.0%) i/s - 48.772M ``` And try! is quite a big hotspot for us so every little gain is appreciable.
| * | | Replacing lambda with proc getting argument error because of it.Ronak Jangir2015-08-171-1/+1
| | | |
| * | | Merge pull request #21025 from ronakjangir47/assertsKasper Timm Hansen2015-08-131-1/+5
| |\ \ \ | | | | | | | | | | Added helper methods to stub any instance
| | * | | Added helper methods to stub any instanceRonak Jangir2015-08-131-1/+5
| | | | |
| * | | | Merge pull request #21217 from myrridin/myrridin-documentation-updatesZachary Scott2015-08-122-4/+4
| |\ \ \ \ | | | | | | | | | | | | [ci skip] Documentation: Switch around a common phrase for readability
| | * | | | [ci skip] Switch around a common idiom for readabilityThomas Hart II2015-08-052-4/+4
| | | | | |
| * | | | | [ci skip] Fix rdoc markupakihiro172015-08-121-1/+1
| | |/ / / | |/| | |
| * | | | :nodoc: internal class [ci skip]Godfrey Chan2015-08-101-1/+1
| | | | |
| * | | | Deprecate the :prefix option of `number_to_human_size`Jean Boussier2015-08-102-2/+4
| | | | |
| * | | | Merge pull request #21124 from kirs/feature/reload-i18nKasper Timm Hansen2015-08-101-2/+17
| |\ \ \ \ | | | | | | | | | | | | Reload I18n.load_path in development
| | * | | | Reload I18n locales in developmentKir Shatrov2015-08-101-2/+17
| | | | | |
| * | | | | Merge pull request #21173 from repinel/fix-callback-terminator-docsClaudio B.2015-08-081-3/+3
| |\ \ \ \ \ | | | | | | | | | | | | | | [ci skip] Fix the AS::Callbacks terminator docs
| | * | | | | [ci skip] Fix the AS::Callbacks terminator docsRoque Pinel2015-08-081-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The second argument of the terminator lambda is no longer the result of the callback, but the result lambda. https://github.com/rails/rails/blob/3a7609e2bafee4b071fe35136274e6ccbae8cacd/activesupport/test/callbacks_test.rb#L553
| * | | | | | replace each with each_key when only the key is neededAaron Lasseigne2015-08-081-1/+1
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using each_key is faster and more intention revealing. Calculating ------------------------------------- each 31.378k i/100ms each_key 33.790k i/100ms ------------------------------------------------- each 450.225k (± 7.0%) i/s - 2.259M each_key 494.459k (± 6.3%) i/s - 2.467M Comparison: each_key: 494459.4 i/s each: 450225.1 i/s - 1.10x slower
| * | | | | Regexp#=== is faster than String#=~schneems2015-08-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Discussion https://github.com/JuanitoFatas/fast-ruby/pull/59#issuecomment-128513763
| * | | | | Only invoke the default block for mattr_accessor once so that it does not ↵Lachlan Sylvester2015-08-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | cause issues if it is not idempotent
| * | | | | speed up code and avoid unnecessary MatchData objectsAaron Lasseigne2015-08-061-1/+1
| |/ / / /
| * | | | Merge pull request #21087 from vngrs/fix_hash_except_docKasper Timm Hansen2015-08-031-8/+9
| |\ \ \ \ | | | | | | | | | | | | Fix the documentation of Hash#except method [ci skip]