aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #21662 from amitsuroliya/improve_docsKasper Timm Hansen2015-09-181-3/+3
|\ | | | | Corrected `to_time` output in ActiveSupport Date Conversion docs [ci …
| * Corrected `to_time` output in ActiveSupport Date Conversion docs.Since ↵amitkumarsuroliya2015-09-181-3/+3
| | | | | | | | | | https://github.com/rails/rails/commit/48583f8bf74d1cefefea3cd6591bd546a9eaff6c, to_time returns times formatted as YYYY-MM-DD HH:MM:SS UTC [ci skip] `to_time` method now returns in `YYYY-MM-DD HH:MM:SS UTC` format.
* | Merge branch 'master' of github.com:rails/docrailsVijay Dev2015-09-181-1/+1
|\ \
| * | s/JQuery/jQuery/Akira Matsuda2015-09-181-1/+1
| | | | | | | | | | | | [ci skip]
* | | File encoding is defaulted to utf-8 in Ruby >= 2.1Akira Matsuda2015-09-186-9/+0
| |/ |/|
* | Correct ArgumentError message in ActiveSupport conversions docs [ci skip]amitkumarsuroliya2015-09-181-1/+1
| | | | | | This was happened after this commit https://github.com/rails/rails/commit/2ebf47aea21ff8ac10681e53e78dd7a0e5c31c6e
* | Merge pull request #21625 from amitsuroliya/improve_docsAndrew White2015-09-171-2/+2
|\ \ | | | | | | Improve Docs of ActiveSupport::TimeZone [ci skip]
| * | Improve Docs of ActiveSupport::TimeZone [ci skip]amitkumarsuroliya2015-09-151-2/+2
| | | | | | | | | | | | | | | `TimeZone` class is a part of `ActiveSupport` module. For Accessing `TimeZone` class, we need to call `ActiveSupport::TimeZone` instead of `TimeZone`. individual `TimeZone` gives `NameError: uninitialized constant ‘TimeZone’ error
* | | Merge pull request #21616 from claudiob/fix-21122Rafael Mendonça França2015-09-141-68/+6
|\ \ \ | |/ / |/| | Remove methods that are never invoked
| * | Remove AS methods that are never invokedclaudiob2015-09-131-68/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes #21122 - does not change any current behavior; simply reflects the fact that two conditions of the if/else statement are never reached. The reason is #17227 which adds a default terminator to AS::Callbacks. Therefore, even callback chains that do not define a terminator now have a terminator, and `chain_config.key?(:terminator)` is always true. Of course, if no terminator was defined, then we want this new default terminator not to do anything special. What the terminator actually does (or should do) is discussed in #21218 but the simple fact that a default terminator exists makes this current PR valid. *Note* that the conditional/simple methods have not been removed in AS::Conditionals::Filter::After because of `:skip_after_callbacks_if_terminated` which lets a user decide **not** to skip after callbacks even if the chain was terminated.
* | | 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
| | | | |