aboutsummaryrefslogtreecommitdiffstats
path: root/actionview
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'upstream/master' into nofollow-changeDillon Welch2017-11-038-10/+33
|\
| * Fix "warning: instance variable @defined_root not initialized"yuuji.yaginuma2017-11-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, the following error is shows only when run the test using `bin/test`. ``` ./bin/test -w test/template/log_subscriber_test.rb Run options: --seed 17167 # Running: /rails/actionview/test/template/log_subscriber_test.rb:34: warning: instance variable @defined_root not initialized ``` In `AVLogSubscriberTest`, if the `Rails.root` is not defined, define the method and undef it in teardown. https://github.com/rails/rails/blob/master/actionview/test/template/log_subscriber_test.rb#L21..L33 However, in `bin/test`, `Rails.root` is defined, which results in referring to uninitialized variables and warnings.
| * Merge pull request #31004 from shuheiktgw/remove_unnecessary_returnsRafael França2017-10-311-2/+2
| |\ | | | | | | Remove redundant return statements
| | * removed unnecessary returnsShuhei Kitagawa2017-10-281-2/+2
| | |
| * | Merge pull request #31012 from y-yagi/remove_unused_missing_requests_errorRafael França2017-10-302-4/+0
| |\ \ | | | | | | | | Remove unused `MissingRequestError`
| | * | Remove unused `MissingRequestError`yuuji.yaginuma2017-10-312-4/+0
| | |/ | | | | | | | | | `MissingRequestError` is no longer used since 1e2b0ce.
| * | Merge pull request #31002 from ta1kt0me/call_ajax_without_beforeSendGuillermo Iguaran2017-10-293-2/+29
| |\ \ | | | | | | | | Call Rails.ajax without beforeSend
| | * | Enable to call Rails.ajax without beforeSendta1kt0me2017-10-283-2/+29
| | |/
| * / Merge pull request #31005 from shuheiktgw/remove_unnecessary_semicolonsMatthew Draper2017-10-281-1/+1
| |/ | | | | | | Removed unnecessary semicolons
* | Fix typoDillon Welch2017-11-021-1/+1
| |
* | Use blank? check instead of key? checkDillon Welch2017-11-021-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to prevent an extra string allocation when there is a rel argument and performs better/within error of the key check for other scenarios such as passing in rel: nil ```ruby begin require "bundler/inline" rescue LoadError => e $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" raise e end gemfile(true) do source "https://rubygems.org" gem "benchmark-ips" gem "rails" end def allocate_count GC.disable before = ObjectSpace.count_objects yield after = ObjectSpace.count_objects after.each { |k,v| after[k] = v - before[k] } after[:T_HASH] -= 1 # probe effect - we created the before hash. GC.enable result = after.reject { |k,v| v == 0 } GC.start result end @hash = {} def master_version "#{@hash["rel"]} nofollow".lstrip end def key_version if @hash.key?("rel") "#{@hash["rel"]} nofollow".lstrip else "nofollow" end end def present_version if @hash["rel"].present? "#{@hash["rel"]} nofollow" else "nofollow".freeze end end def nil_version if @hash["rel"].nil? "nofollow".freeze else "#{@hash["rel"]} nofollow" end end def blank_version if @hash["rel"].blank? "nofollow".freeze else "#{@hash["rel"]} nofollow" end end def test puts "master_version" puts allocate_count { 1000.times { master_version } } puts "key_version" puts allocate_count { 1000.times { key_version } } puts "present_version" puts allocate_count { 1000.times { present_version } } puts "nil_version" puts allocate_count { 1000.times { nil_version } } puts "blank_version" puts allocate_count { 1000.times { blank_version } } Benchmark.ips do |x| x.report("master_version") { master_version } x.report("key_version") { key_version } x.report("present_version") { present_version } x.report("nil_version") { nil_version } x.report("blank_version") { blank_version } x.compare! end end puts 'no rel key' test puts 'rel key with real stuff' @hash['rel'] = 'hi'.freeze test puts 'rel key with nil' @hash['rel'] = nil test puts 'rel key with ""' @hash['rel'] = "" test ``` ``` no rel key master_version {:FREE=>-2818, :T_STRING=>3052} key_version {:FREE=>-1} present_version {:FREE=>-1} nil_version {:FREE=>-1} blank_version {:FREE=>-1} Warming up -------------------------------------- master_version 124.677k i/100ms key_version 227.992k i/100ms present_version 208.068k i/100ms nil_version 235.272k i/100ms blank_version 176.274k i/100ms Calculating ------------------------------------- master_version 1.968M (±10.8%) i/s - 9.725M in 5.010763s key_version 7.734M (±11.2%) i/s - 38.075M in 5.001613s present_version 5.688M (±11.4%) i/s - 28.089M in 5.019560s nil_version 6.965M (±10.2%) i/s - 34.585M in 5.024806s blank_version 6.139M (±18.7%) i/s - 29.085M in 5.010919s Comparison: key_version: 7734058.3 i/s nil_version: 6965050.2 i/s - same-ish: difference falls within error blank_version: 6138744.3 i/s - same-ish: difference falls within error present_version: 5688248.4 i/s - 1.36x slower master_version: 1967932.3 i/s - 3.93x slower rel key with real stuff master_version {:FREE=>-2001, :T_STRING=>2000} key_version {:FREE=>-2001, :T_STRING=>2000} present_version {:FREE=>-1001, :T_STRING=>1000} nil_version {:FREE=>-1002, :T_STRING=>1000, :T_IMEMO=>1} blank_version {:FREE=>-1001, :T_STRING=>1000} Warming up -------------------------------------- master_version 93.351k i/100ms key_version 89.747k i/100ms present_version 91.963k i/100ms nil_version 103.370k i/100ms blank_version 74.845k i/100ms Calculating ------------------------------------- master_version 2.179M (±21.4%) i/s - 10.362M in 5.044668s key_version 2.345M (± 9.8%) i/s - 11.667M in 5.030982s present_version 1.738M (±14.8%) i/s - 8.553M in 5.056406s nil_version 2.485M (±19.1%) i/s - 11.888M in 5.015940s blank_version 1.951M (±12.3%) i/s - 9.580M in 5.011932s Comparison: nil_version: 2484704.1 i/s key_version: 2344664.8 i/s - same-ish: difference falls within error master_version: 2178975.8 i/s - same-ish: difference falls within error blank_version: 1950532.0 i/s - same-ish: difference falls within error present_version: 1737866.7 i/s - 1.43x slower rel key with nil master_version {:FREE=>-3001, :T_STRING=>3000} key_version {:FREE=>-3001, :T_STRING=>3000} present_version {:FREE=>-1} nil_version {:FREE=>-1} blank_version {:FREE=>-1} Warming up -------------------------------------- master_version 112.655k i/100ms key_version 105.048k i/100ms present_version 136.219k i/100ms nil_version 192.026k i/100ms blank_version 184.846k i/100ms Calculating ------------------------------------- master_version 1.893M (±12.6%) i/s - 9.238M in 5.002621s key_version 1.672M (±13.5%) i/s - 8.194M in 5.021197s present_version 4.484M (±20.5%) i/s - 21.114M in 5.002982s nil_version 5.294M (±18.1%) i/s - 25.155M in 5.020721s blank_version 5.588M (± 6.7%) i/s - 27.912M in 5.019305s Comparison: blank_version: 5588489.6 i/s nil_version: 5293929.9 i/s - same-ish: difference falls within error present_version: 4484493.7 i/s - same-ish: difference falls within error master_version: 1892919.0 i/s - 2.95x slower key_version: 1672343.9 i/s - 3.34x slower rel key with "" master_version {:FREE=>-2001, :T_STRING=>2000} key_version {:FREE=>-2001, :T_STRING=>2000} present_version {:FREE=>-1} nil_version {:FREE=>-1001, :T_STRING=>1000} blank_version {:FREE=>-1} Warming up -------------------------------------- master_version 140.499k i/100ms key_version 124.738k i/100ms present_version 186.659k i/100ms nil_version 148.063k i/100ms blank_version 178.707k i/100ms Calculating ------------------------------------- master_version 1.826M (±24.2%) i/s - 8.289M in 5.026603s key_version 1.561M (±15.3%) i/s - 7.609M in 5.005662s present_version 3.622M (±19.9%) i/s - 17.173M in 5.042217s nil_version 2.438M (±11.5%) i/s - 12.141M in 5.053335s blank_version 4.911M (±15.5%) i/s - 23.768M in 5.009106s Comparison: blank_version: 4910741.1 i/s present_version: 3622183.5 i/s - same-ish: difference falls within error nil_version: 2437606.2 i/s - 2.01x slower master_version: 1825652.2 i/s - 2.69x slower key_version: 1560530.5 i/s - 3.15x slower ```
* | Prevent extra string allocations when no 'rel' arg passedDillon Welch2017-10-261-3/+7
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do a check if the 'rel' argument is passed in, and simply set it to 'nofollow' if 'rel' was not passed in. This prevents three string allocations for each call to `link_to` in that scenario. In the scenario where the 'rel' argument is passed in, performance is around the same as before as the `key?` check is very fast. ```ruby begin require "bundler/inline" rescue LoadError => e $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" raise e end gemfile(true) do source "https://rubygems.org" gem "benchmark-ips" gem "rails" end def allocate_count GC.disable before = ObjectSpace.count_objects yield after = ObjectSpace.count_objects after.each { |k,v| after[k] = v - before[k] } after[:T_HASH] -= 1 # probe effect - we created the before hash. GC.enable result = after.reject { |k,v| v == 0 } GC.start result end @hash = {} def master_version "#{@hash['rel'.freeze]} nofollow".lstrip end def fast_version if @hash.key?('rel'.freeze) "#{@hash["rel"]} nofollow".lstrip else "nofollow".freeze end end puts 'no rel key' puts "master_version" puts allocate_count { 1000.times { master_version } } puts "fast_version" puts allocate_count { 1000.times { fast_version } } Benchmark.ips do |x| x.report("master_version") { master_version } x.report("fast_version") { fast_version } x.compare! end puts 'rel key' @hash['rel'] = 'hi'.freeze puts "master_version" puts allocate_count { 1000.times { master_version } } puts "fast_version" puts allocate_count { 1000.times { fast_version } } Benchmark.ips do |x| x.report("master_version") { master_version } x.report("fast_version") { fast_version } x.compare! end ``` ``` no rel key master_version {:FREE=>-2791, :T_STRING=>3052} fast_version {:FREE=>-1} Warming up -------------------------------------- master_version 80.324k i/100ms fast_version 200.262k i/100ms Calculating ------------------------------------- master_version 2.049M (±11.9%) i/s - 10.121M in 5.025613s fast_version 6.645M (±21.3%) i/s - 29.439M in 5.007488s Comparison: fast_version: 6644506.3 i/s master_version: 2048833.0 i/s - 3.24x slower rel key master_version {:FREE=>-2001, :T_STRING=>2000} fast_version {:FREE=>-2001, :T_STRING=>2000} Warming up -------------------------------------- master_version 155.673k i/100ms fast_version 106.515k i/100ms Calculating ------------------------------------- master_version 2.652M (±20.4%) i/s - 12.610M in 5.036494s fast_version 2.237M (±16.8%) i/s - 10.865M in 5.035366s Comparison: master_version: 2651702.2 i/s fast_version: 2237470.6 i/s - same-ish: difference falls within error ```
* Merge pull request #30513 from y-yagi/fix_30444Akira Matsuda2017-10-252-2/+4
|\ | | | | Does not include disabled element in params
| * Does not include disabled element in paramsyuuji.yaginuma2017-09-032-2/+4
| | | | | | | | | | | | | | In the case of remote, it should be the same behavior as submitting HTML form. Fixes #30444
* | Remove deprecated Erubis ERB handlerRafael Mendonça França2017-10-235-112/+4
| |
* | Merge pull request #29710 from padi/rails-ujs-docsGuillermo Iguaran2017-10-222-0/+25
|\ \ | | | | | | Adds descriptions to rails-ujs methods [ci skip]
| * | Adds descriptions to rails-ujs methods [ci skip]Marc Rendl Ignacio2017-07-072-0/+25
| | |
* | | [Action View] require_relative => requireAkira Matsuda2017-10-2125-35/+35
| | | | | | | | | | | | This basically reverts c4d1a4efeec6f0b5b58222993aa0bec85a19b6a8
* | | Return correct exit status of ujs testyuuji.yaginuma2017-10-201-1/+1
| | | | | | | | | | | | | | | | | | The `Process::Status#to_i` returns the bits in stat. If need exit status, need to use `#exitstatus`. Ref: https://ruby-doc.org/core-2.4.0/Process/Status.html#method-i-to_i
* | | PhantomJS is abandoned, replace it with Selenium/Chrome headlessGuillermo Iguaran2017-10-191-1/+1
| | |
* | | Merge pull request #29127 from DmytroVasin/rails-ujs-remote-callbacksGuillermo Iguaran2017-10-193-69/+34
|\ \ \ | | | | | | | | Fix callback in rails ujs
| * | | Fix callback in rails ujsVasin Dmitriy2017-06-073-69/+34
| | | |
* | | | Remove unused `FixtureTemplate` classyuuji.yaginuma2017-10-191-11/+0
| | | | | | | | | | | | | | | | `FixtureTemplate` is no longer used since 3d7892d.
* | | | Remove extra spaces in the args in the `time_zone_select` [ci skip]Ryuta Kamizono2017-10-161-6/+6
| | | | | | | | | | | | | | | | Follow up of #30862.
* | | | Fix some typos.Mike Boone2017-10-102-3/+3
| | | |
* | | | Merge pull request #30831 from masatooba/fix-radio-button-tag-commentEileen M. Uchitelle2017-10-081-1/+1
|\ \ \ \ | | | | | | | | | | Fix radio_button_tag comment
| * | | | Fix radio_button_tag commentMasato Oba2017-10-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Colons, periods, etc. can also be included in id. The sanitize_to_id method does not remove them.
* | | | | request checkpavel2017-10-051-2/+2
|/ / / /
* | | | Implement H2 Early Hints for Railseileencodes2017-10-043-5/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When puma/puma#1403 is merged Puma will support the Early Hints status code for sending assets before a request has finished. While the Early Hints spec is still in draft, this PR prepares Rails to allowing this status code. If the proxy server supports Early Hints, it will send H2 pushes to the client. This PR adds a method for setting Early Hints Link headers via Rails, and also automatically sends Early Hints if supported from the `stylesheet_link_tag` and the `javascript_include_tag`. Once puma supports Early Hints the `--early-hints` argument can be passed to the server to enable this or set in the puma config with `early_hints(true)`. Note that for Early Hints to work in the browser the requirements are 1) a proxy that can handle H2, and 2) HTTPS. To start the server with Early Hints enabled pass `--early-hints` to `rails s`. This has been verified to work with h2o, Puma, and Rails with Chrome. The commit adds a new option to the rails server to enable early hints for Puma. Early Hints spec: https://tools.ietf.org/html/draft-ietf-httpbis-early-hints-04 [Eileen M. Uchitelle, Aaron Patterson]
* | | | Merge pull request #30786 from y-yagi/add_test_case_for_font_urlRyuta Kamizono2017-10-031-0/+26
|\ \ \ \ | | | | | | | | | | Add test case for `font_url`
| * | | | Add test case for `font_url`yuuji.yaginuma2017-10-031-0/+26
| | | | | | | | | | | | | | | | | | | | Since test of `font_url` was not in Action View's test suite, so it added.
* | | | | rails-ujs: Update READMEElliot Winkler2017-10-021-23/+18
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make various wording tweaks to cater to users who are viewing the README on NPM. Notably, don't highlight Yarn specifically in the installation instructions -- even though this is the preferred tool of choice especially in the Ruby community, some people still use NPM (and, really, ES2015+ syntax has nothing to do with NPM or Yarn).
* | | | Remove `:api:` tag that has leaked on the doc directly [ci skip]Ryuta Kamizono2017-09-302-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently `:api:` tag has leaked on the doc directly since RDoc doesn't support `:api:` tag directive. http://api.rubyonrails.org/v5.1/classes/AbstractController/Rendering.html So `:api: private` doesn't work as expected. We are using `:nodoc:` for the purpose. Related #13989.
* | | | Remove unused methods from `RenderPartialWithRecordIdentificationController`yuuji.yaginuma2017-09-301-10/+0
| | | | | | | | | | | | | | | | These methods no longer used since a3da293.
* | | | Include `ActionDispatch::DrawOnce` in `ActiveSupport::TestCase`Ryuta Kamizono2017-09-271-1/+1
| | | | | | | | | | | | | | | | It is also used in `BlockTestCase`.
* | | | Remove unused code that was copied from actionpackRyuta Kamizono2017-09-271-52/+1
| | | | | | | | | | | | | | | | | | | | `abstract_unit.rb` in actionview was copied from actionpack in the commit eb23754e. But some part is never used for actionview's tests.
* | | | Fix `test_should_sanitize_illegal_style_properties` failureRyuta Kamizono2017-09-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://travis-ci.org/rails/rails/jobs/279300966#L2600 The result of `Loofah::HTML5::Scrub.scrub_css` was changed since v2.1.0.rc1. https://github.com/flavorjones/loofah/commit/ca56295ff9e802018ea18d23ed49be235a95ccad
* | | | Merge pull request #29791 from yui-knk/at_objectRyuta Kamizono2017-09-0513-19/+19
|\ \ \ \ | | | | | | | | | | Do not pass an instance variable to a private method
| * | | | Do not pass an instance variable to a private methodyui-knk2017-09-0513-19/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `ActionView::Helpers::Tags::Base` has `@object` and all passed arguments for * `#value` * `#value_before_type_cast` * `#value_came_from_user?` are `@object`, so we do not need to pass arguments in this case.
* | | | | Fix outdated comment [ci skip]yuuji.yaginuma2017-09-021-1/+1
| |_|_|/ |/| | | | | | | | | | | We do not use double assign since 61f92f8bc5fa0b486fc56f249fa23f1102e79759.
* | | | double assign is no longer an effective workaround for unused variable warningAkira Matsuda2017-09-011-1/+1
| | | | | | | | | | | | | | | | `def a() x = x = 1; end` warns since Ruby 2.5 (r59585)
* | | | Clarify intentions around method redefinitionsMatthew Draper2017-09-012-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't use remove_method or remove_possible_method just before a new definition: at best the purpose is unclear, and at worst it creates a race condition. Instead, prefer redefine_method when practical, and silence_redefinition_of_method otherwise.
* | | | Merge pull request #30392 from koic/unify_source_control_keep_file_nameMatthew Draper2017-08-311-0/+0
|\ \ \ \ | | | | | | | | | | Unify the internal source control .keep file name
| * | | | Unify the internal source control .keep file nameKoichi ITO2017-08-241-0/+0
| | | | |
* | | | | Use tt in doc for ActionView [ci skip]Yoshiyuki Hirano2017-08-275-24/+24
| | | | |
* | | | | Fix broken doc layout for action_view [ci skip]Yoshiyuki Hirano2017-08-2722-22/+22
| | | | |
* | | | | Remove `alt` text from `image_tag` example [ci skip]yuuji.yaginuma2017-08-242-7/+7
| | | | | | | | | | | | | | | | | | | | Follow up of #30213
* | | | | Make sure image_alt is deprecatedRafael Mendonça França2017-08-231-5/+15
| | | | |
* | | | | Remove alt generation from image_submit_tagRafael Mendonça França2017-08-232-7/+7
| | | | |
* | | | | Merge pull request #30213 from ckundo/ccundiff-alt-text-defaultRafael Mendonça França2017-08-233-29/+31
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | Do not generate default alt text for images