Просмотр исходного кода

[ruby] Use Rack::Utils.escape_html for escaping (#10032)

Rack::Utils.escape_html is faster than CGI.escape_html:

```ruby
require 'benchmark/ips'
require 'cgi'
require 'rack'

Benchmark.ips do |x|
  x.config(warmup: 2, time: 5)

  message = 'Additional fortune added at request time.'
  x.report("CGI") do
    CGI.escape_html(message)
  end

  x.report("Rack") do
    Rack::Utils.escape_html(message)
  end

  x.compare!
end
```

```
ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [arm64-darwin24]
Warming up --------------------------------------
                 CGI     1.016M i/100ms
                Rack     1.586M i/100ms
Calculating -------------------------------------
                 CGI     10.821M (± 0.3%) i/s   (92.42 ns/i) -     54.837M in   5.067830s
                Rack     15.861M (± 0.3%) i/s   (63.05 ns/i) -     80.886M in   5.099606s

Comparison:
                Rack: 15861352.0 i/s
                 CGI: 10820753.9 i/s - 1.47x  slower
```
Petrik de Heus 1 месяц назад
Родитель
Сommit
6c26a89dd7

+ 1 - 1
frameworks/Ruby/rage-sequel/app/views/fortunes.html.erb

@@ -5,7 +5,7 @@
     <table>
     <tr><th>id</th><th>message</th></tr>
     <% records.each do |record| %>
-      <tr><td><%= record.id %></td><td><%= CGI.escape_html(record.message) %></td></tr>
+      <tr><td><%= record.id %></td><td><%= Rack::Utils.escape_html(record.message) %></td></tr>
     <% end %>
     </table>
   </body>

+ 1 - 1
frameworks/Ruby/rage/app/views/fortunes.html.erb

@@ -5,7 +5,7 @@
     <table>
     <tr><th>id</th><th>message</th></tr>
     <% records.each do |record| %>
-      <tr><td><%= record[:id] %></td><td><%= CGI.escape_html(record[:message]) %></td></tr>
+      <tr><td><%= record[:id] %></td><td><%= Rack::Utils.escape_html(record[:message]) %></td></tr>
     <% end %>
     </table>
   </body>