aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Use assert_match / assert_no_match for asserting match"Akira Matsuda2019-07-292-9/+9
| | | | | | This reverts commit e9651deea4145f62224af56af027bfbb3e45e4cd. Now we're having both `=~` and `match?` for these objects, and it's nicer to have explicit tests for both of them
* Add AS::TimeZone#match?Akira Matsuda2019-07-295-3/+19
|
* Add AS::Multibyte::Chars#match?Akira Matsuda2019-07-292-1/+7
|
* Add Mime::Type#match? that doesn't create MatchDataAkira Matsuda2019-07-292-1/+13
|
* Suppress Ruby warning: :warning: non-nil $, will be deprecatedAkira Matsuda2019-07-291-2/+6
|
* Merge pull request #36031 from st0012/guard-35982Rafael França2019-07-281-1/+16
|\ | | | | Add test case to guard the query count for relation cache (for #35982)
| * Assert query counts in cache relation testst00122019-07-281-1/+16
| | | | | | | | This is to guard the change in #35982
* | Add viewport meta tag to default application templateLachlan Campbell2019-07-281-0/+1
| |
* | Improves compatibility of require_dependency in zeitwerk mode [Closes #36774]Xavier Noria2019-07-282-1/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Applications are not supposed to use require_dependency in their own code if running in zeitwerk mode, and require_dependency was initially aliased to require with that use case in mind. However, there are situations in which you cannot control the mode and need to be compatible with both. There, you might need require_dependency in case you are being executed in classic mode. Think about engines that want to support both modes in their parent applications, for example. Furthermore, Rails itself loads helpers using require_dependency. Therefore, we need better compatibility.
* | Performance improvement for `String#to`Ryuta Kamizono2019-07-283-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ```ruby class String def to1(position) position = [position + length, -1].max if position < 0 self[0, position + 1] end def to2(position) position += size if position < 0 self[0, position + 1] || +"" end end Benchmark.ips do |x| x.report("'foo'.to(1)") { 'foo'.to(1) } x.report("'foo'.to1(1)") { 'foo'.to1(1) } x.report("'foo'.to2(1)") { 'foo'.to2(1) } x.report("'foo'.to(-1)") { 'foo'.to(-1) } x.report("'foo'.to1(-1)") { 'foo'.to1(-1) } x.report("'foo'.to2(-1)") { 'foo'.to2(-1) } x.report("'foo'.to(-10)") { 'foo'.to(-10) } x.report("'foo'.to1(-10)") { 'foo'.to1(-10) } x.report("'foo'.to2(-10)") { 'foo'.to2(-10) } end ``` Result: ``` Warming up -------------------------------------- 'foo'.to(1) 199.859k i/100ms 'foo'.to1(1) 220.293k i/100ms 'foo'.to2(1) 221.522k i/100ms 'foo'.to(-1) 205.032k i/100ms 'foo'.to1(-1) 195.837k i/100ms 'foo'.to2(-1) 214.975k i/100ms 'foo'.to(-10) 214.331k i/100ms 'foo'.to1(-10) 182.666k i/100ms 'foo'.to2(-10) 224.696k i/100ms Calculating ------------------------------------- 'foo'.to(1) 4.685M (± 4.2%) i/s - 23.583M in 5.042568s 'foo'.to1(1) 5.233M (± 5.8%) i/s - 26.215M in 5.026778s 'foo'.to2(1) 5.180M (± 5.7%) i/s - 25.918M in 5.020735s 'foo'.to(-1) 4.253M (± 7.0%) i/s - 21.323M in 5.043133s 'foo'.to1(-1) 4.438M (±11.2%) i/s - 21.934M in 5.025751s 'foo'.to2(-1) 4.716M (± 9.8%) i/s - 23.432M in 5.028088s 'foo'.to(-10) 4.678M (± 9.5%) i/s - 23.148M in 5.007379s 'foo'.to1(-10) 4.428M (± 5.1%) i/s - 22.103M in 5.005155s 'foo'.to2(-10) 5.243M (± 4.6%) i/s - 26.289M in 5.024695s ```
* | Merge pull request #36787 from st0012/refactor-sql-testsRyuta Kamizono2019-07-282-8/+2
|\ \ | | | | | | Use capture_sql helper method in tests
| * | Use capture_sql helper method in testsst00122019-07-282-8/+2
| |/
* | Revert "Merge pull request #36785 from shes50103/fix_typo_actionpack_changelog"Ryuta Kamizono2019-07-281-1/+1
| | | | | | | | | | This reverts commit ac6f3c9299209ea4b2fa7c368ea1ff406735ca93, reversing changes made to 5b0ea95a1a8acc5054f9a58d324070303cbd19b9.
* | Merge pull request #36185 from jonathanhefner/optimize-string-first-and-lastRafael França2019-07-282-34/+22
|\ \ | | | | | | Improve String#first and #last performance
| * | Improve String#first and #last performanceJonathan Hefner2019-05-052-34/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removes unnecessary conditional and method call for significant performance improvement. As a side effect, this fixes an unexpected behavior where passing a limit of 0 would return a frozen string. This also implements the Rails 6.1 intended behavior with regards to negative limits, and removes the previous deprecation warnings. String#first Comparison: new: 3056515.0 i/s old: 1943310.2 i/s - 1.57x slower String#last Comparison: new: 2691919.0 i/s old: 1924256.6 i/s - 1.40x slower (Note: "old" benchmarks have deprecation warnings commented out, for a more fair comparison.)
* | | Merge pull request #36785 from shes50103/fix_typo_actionpack_changelogRafael França2019-07-271-1/+1
|\ \ \ | | | | | | | | fix typo in actionpack CHANGELOG.md
| * | | fix typo in actionpack CHANGELOG.mdshes501032019-07-281-1/+1
|/ / /
* | | Merge pull request #36545 from tomfakes/screenshot-updatesRafael Mendonça França2019-07-273-30/+110
|\ \ \ | | | | | | | | | | | | HTML page save during screenshot and multiple shots per test
| * | | Add code to save the HTML of the page being screenshotted during the ↵Tom Fakes2019-06-253-30/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `take_screenshot` method that is enabled by a new environment variable - RAILS_SYSTEM_TESTING_SCREENSHOT_HTML=1 Add the ability to call `take_screenshot` more than once in a single test by prefixing the name of the image file with a counter that is incremented on every `take_screenshot` call. This allows a developer to see their pages in sequence when trying to debug test errors. This does not affect the failure case where the prefix remains 'failures'
* | | | Merge pull request #36303 from gaotongfei/feature/ignore-specified-fixturesRafael França2019-07-276-5/+111
|\ \ \ \ | | | | | | | | | | Allow specifying fixtures to be ignored in "_fixture" section
| * | | | Allow specify fixtures to be ignoredTongfei Gao2019-07-276-5/+111
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow specifying what fixtures can be ignored by setting `ignore` in fixtures YAML file: # users.yml _fixture: ignore: - base base: &base admin: false introduction: "This is a default description" admin: <<: *base admin: true visitor: <<: *base In the above example, "base" fixture will be ignored when creating users fixture. This is helpful when you want to inherit attributes and it makes your fixtures more "DRY".
* | | | Update links to new MySQL server errors reference page [ci skip]Carlos Antonio da Silva2019-07-272-2/+2
| | | |
* | | | Merge pull request #36783 from ershad/use-smaller-tif-fileKasper Timm Hansen2019-07-271-0/+0
|\ \ \ \ | | | | | | | | | | Use a smaller TIFF file as fixture
| * | | | Use a smaller TIFF file as fixtureErshad Kunnakkadan2019-07-271-0/+0
|/ / / /
* / / / Avoid to use a method that acts on the hashyuuji.yaginuma2019-07-271-1/+1
|/ / / | | | | | | | | | To avoid a deprecation warning.
* | | Use match? where we don't need MatchDataAkira Matsuda2019-07-2723-28/+28
| | | | | | | | | | | | We're already running Performance/RegexpMatch cop, but it seems like the cop is not always =~ justice
* | | Use assert_match / assert_no_match for asserting matchAkira Matsuda2019-07-272-9/+9
| | |
* | | Do not use the same temp file in different testsyuuji.yaginuma2019-07-271-4/+5
| | | | | | | | | | | | | | | It causes unexpected results when running tests in parallel. Ref: https://buildkite.com/rails/rails/builds/62610#0165f6d9-b9c8-4948-9319-07b58bfbfd4f/989-998
* | | Fix "warning: ambiguous first argument; put parentheses or a space even ↵yuuji.yaginuma2019-07-271-1/+1
| | | | | | | | | | | | after `/' operator"
* | | Merge pull request #36781 from pietro-moro/phone_to_tests_followupCarlos Antonio da Silva2019-07-261-8/+8
|\ \ \ | | | | | | | | Change test description with the correct URL name
| * | | Change test description with the correct URL namePietro Moro2019-07-261-8/+8
| | | |
* | | | Merge pull request #36773 from seejohnrun/db-configuration-separate-env-varsEileen M. Uchitelle2019-07-263-7/+45
|\ \ \ \ | |/ / / |/| | | Allow separate database env variables per-connection
| * | | Allow separate database env variables per-connectionJohn Crepezzi2019-07-263-7/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds a feature which allows separate database ENV variables to be defined for each spec in a 3-tier config. The names for the environment variables will be `#{name.upcase}_DATABASE_URL` This commit also introduces a change in behavior around handling of `DATABASE_URL`. Instead of using `DATABASE_URL` to change _all_ specs in a multi-database configuration, it will now only affect the `primary` connection.
* | | | Remove tough to grasp -1 + 1 = 0 from String#toKasper Timm Hansen2019-07-262-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case a negative position is provided that exceeds the size of the string, we're relying on -1 returned from max to get 0 length by + 1 and let [] with a 0 length returning "" for us. E.g. "hello".to(-7), where -7 + 5 size = -2. That's lower than -1, so we use -1 instead and + 1 would turn it into 0. Instead allow outer bounds access and always return "".
* | | | Merge pull request #36178 from sshaw/fix_time_zone_options_priorityRafael França2019-07-261-3/+4
|\ \ \ \ | | | | | | | | | | Update time_zone_options_for_select docs
| * | | | Update time_zone_options_for_select docssshaw2019-05-041-3/+4
| | | | |
* | | | | Merge pull request #36227 from ↵Rafael França2019-07-262-1/+12
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | betesh/avoid-misleading-error-about-late-attachments Prevent reading inline attachments after `mail` was called from raising an inaccurate exception
| * | | | | Prevent reading inline attachments after `mail` was called from raising an ↵Isaac Betesh2019-05-212-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | inaccurate exception Without this change, `attachments.inline['my_attachment'].present?`, for example, would raise the exception `Can't add attachments after mail was called`. I first brought this issue up at https://github.com/rails/rails/issues/16163#issuecomment-437378347. Note that this commit addresses only one of the 2 problems I described in that comment. The other problem is that using `attachments.inline['my_attachment']` for reading an attachment is unnecessary--it's the same as `attachments['my_attachment']`--even before `mail` is called. We could add a warning about the unnecessary use of `inline` but I'm saving that for a later PR since my comment has not received any feedback yet.
* | | | | | Merge pull request #36780 from ↵Rafael França2019-07-261-7/+7
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | abhaynikam/36775-follow-up-change-test-description Change the test description to say the URL helper name in test.
| * | | | | | Change the test description to say the URL helper name in test.Abhay Nikam2019-07-271-7/+7
| | | | | | |
* | | | | | | Fix error 500 caused by ActionController::RoutingError (via fail-safe) when ↵Simone Carletti2019-07-261-1/+17
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | POST parameters are invalid (#29985) * Reproduce error caused by malformed parameters Error: RequestFormat#test_format_does_not_throw_exceptions_when_invalid_POST_parameters: ActionDispatch::Http::Parameters::ParseError: 765: unexpected token at '{record:{content:24.12.1.146}}' /Users/weppos/Mirrors/rails/actionpack/lib/action_dispatch/http/parameters.rb:113:in `rescue in parse_formatted_parameters' /Users/weppos/Mirrors/rails/actionpack/lib/action_dispatch/http/parameters.rb:107:in `parse_formatted_parameters' /Users/weppos/Mirrors/rails/actionpack/lib/action_dispatch/http/request.rb:360:in `block in POST' /Users/weppos/.rvm/gems/ruby-2.3.3/gems/rack-2.0.3/lib/rack/request.rb:57:in `fetch' /Users/weppos/.rvm/gems/ruby-2.3.3/gems/rack-2.0.3/lib/rack/request.rb:57:in `fetch_header' /Users/weppos/Mirrors/rails/actionpack/lib/action_dispatch/http/request.rb:359:in `POST' /Users/weppos/Mirrors/rails/actionpack/lib/action_dispatch/http/parameters.rb:53:in `parameters' /Users/weppos/Mirrors/rails/actionpack/lib/action_dispatch/http/mime_negotiation.rb:62:in `block in formats' /Users/weppos/.rvm/gems/ruby-2.3.3/gems/rack-2.0.3/lib/rack/request.rb:57:in `fetch' /Users/weppos/.rvm/gems/ruby-2.3.3/gems/rack-2.0.3/lib/rack/request.rb:57:in `fetch_header' /Users/weppos/Mirrors/rails/actionpack/lib/action_dispatch/http/mime_negotiation.rb:60:in `formats' /Users/weppos/Mirrors/rails/actionpack/test/dispatch/request_test.rb:891:in `block in <class:RequestFormat>' See GH-29983 * Capture parameter parsing error output and test it This change prevents the log to be displayed in the tests. Moreover, the assertion against the debug ensures that the test effectively triggers the parsing error as expected. * Use a generic value in the test * Switch to assert_match [Simone Carletti + Rafael Mendonça França]
* | | | | | Added a phone_to helper method, on the style of mail_to and sms_to. (#36775)Pietro Moro2019-07-263-0/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Added a phone_to helper method, on the style of mail_to and sms_to. It creates an anchor tag with the href set to tel: *here your number* which, when clicked on a mobile phone, or on a desktop with a supported application, lets the phone app kick in, and it prepopulates it with the phone number specified. [Pietro Moro + Rafael Mendonça França]
* | | | | | Merge pull request #36254 from sharang-d/remove-named-helpersRafael França2019-07-265-14/+14
|\ \ \ \ \ \ | | | | | | | | | | | | | | Use a single term instead of all terms used to describe path and URL helpers together
| * | | | | | Use a single term instead of all terms used to describe path and URL helpers ↵Sharang Dashputre2019-07-265-14/+14
| | |_|/ / / | |/| | | | | | | | | | | | | | | | together
* | | | | | Merge pull request #36702 from cpruitt/raise-on-transliterate-ascii-8bitRafael França2019-07-262-1/+75
|\ \ \ \ \ \ | | | | | | | | | | | | | | Handle invalid string encodings and characters in ActiveSupport::Inflector.transliterate
| * | | | | | Remove comments in test fileCliff Pruitt2019-07-261-7/+0
| | | | | | |
| * | | | | | Handle GB18030 strings with invalid characters in transliterateCliff Pruitt2019-07-262-13/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GB18030 is Unicode compatible and covers all Unicode code points so we can temporarily convert GB18030 strings to UTF-8 to perform the transliteration. After transliterating we want to convert back to GB18030. In all cases of transcoding, we replace invalid or undefined characters with the default replacement character ("?"). This is in line with the behavior of tidy_bytes which is used on the UTF-8 string before transliterating.
| * | | | | | Handle US-ASCII strings with invalid characters in transliterateCliff Pruitt2019-07-262-19/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | US-ASCII is a subset of UTF-8 so we can temporarily convert US-ASCII strings to UTF-8 to perform the transliteration. After we've converted characters to ASCII representations, we can set the encoding back to US-ASCII to return the same encoding we accepted.
| * | | | | | Add encoding tests for ActiveSupport::Inflector.transliterateCliff Pruitt2019-07-261-0/+57
| | | | | | |
| * | | | | | Raise errors for ASCII-8BIT encoding in ActiveSupport::Inflector::transliterateCliff Pruitt2019-07-262-0/+12
| |/ / / / / | | | | | | | | | | | | | | | | | | Adds ArgumentErrors to `ActiveSupport::Inflector::transliterate` if a string is with ASCII-8BIT which will raise an error in `unicode_normalize`.