Skip to content
This repository was archived by the owner on Mar 24, 2026. It is now read-only.

Commit 67475ff

Browse files
authored
[ruby/sequel] Use setter methods instead of Hash (#10619)
Creating a model from a hash calls Sequel::Model::InstanceMethods#set_restricted which checks if the keys are defined as setter methods. Calling the setter methods directly perform better.
1 parent 516f232 commit 67475ff

6 files changed

Lines changed: 33 additions & 21 deletions

File tree

frameworks/Ruby/rack-app/app.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ class App < Rack::App
2323
helpers do
2424
def fortunes
2525
fortunes = Fortune.all
26-
fortunes << Fortune.new(
27-
id: 0,
28-
message: "Additional fortune added at request time."
29-
)
26+
27+
fortune = Fortune.new
28+
fortune.id = 0
29+
fortune.message = "Additional fortune added at request time."
30+
fortunes << fortune
31+
3032
fortunes.sort_by!(&:message)
3133
end
3234
end

frameworks/Ruby/rack-sequel/hello_world.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,12 @@ def queries(env)
4848

4949
def fortunes
5050
fortunes = Fortune.all
51-
fortunes << Fortune.new(
52-
id: 0,
53-
message: 'Additional fortune added at request time.'
54-
)
51+
52+
fortune = Fortune.new
53+
fortune.id = 0
54+
fortune.message = "Additional fortune added at request time."
55+
fortunes << fortune
56+
5557
fortunes.sort_by!(&:message)
5658

5759
html = String.new(<<~'HTML')

frameworks/Ruby/rage-sequel/app/controllers/benchmarks_controller.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ def queries
2626
def fortunes
2727
records = Fortune.all
2828

29-
records << Fortune.new(id: 0, message: "Additional fortune added at request time.")
29+
fortune = Fortune.new
30+
fortune.id = 0
31+
fortune.message = "Additional fortune added at request time."
32+
records << fortune
33+
3034
records.sort_by!(&:message)
3135

3236
render plain: FORTUNES_TEMPLATE.result(binding)

frameworks/Ruby/roda-sequel/hello_world.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,12 @@ def rand1
6767
r.is "fortunes" do
6868
response[CONTENT_TYPE] = HTML_TYPE
6969
@fortunes = Fortune.all
70-
@fortunes << Fortune.new(
71-
id: 0,
72-
message: "Additional fortune added at request time."
73-
)
70+
71+
fortune = Fortune.new
72+
fortune.id = 0
73+
fortune.message = "Additional fortune added at request time."
74+
@fortunes << fortune
75+
7476
@fortunes.sort_by!(&:message)
7577
view :fortunes
7678
end

frameworks/Ruby/sinatra-sequel/hello_world.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,12 @@ class HelloWorld < Sinatra::Base
5858
# Test type 4: Fortunes
5959
get '/fortunes' do
6060
@fortunes = Fortune.all
61-
@fortunes << Fortune.new(
62-
id: 0,
63-
message: 'Additional fortune added at request time.'
64-
)
61+
62+
fortune = Fortune.new
63+
fortune.id = 0
64+
fortune.message = "Additional fortune added at request time."
65+
@fortunes << fortune
66+
6567
@fortunes.sort_by!(&:message)
6668

6769
render_html :fortunes

frameworks/Ruby/sinatra/hello_world.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ class HelloWorld < Sinatra::Base
6565
@fortunes = ActiveRecord::Base.with_connection do
6666
Fortune.all
6767
end.to_a
68-
@fortunes << Fortune.new(
69-
id: 0,
70-
message: 'Additional fortune added at request time.'
71-
)
68+
fortune = Fortune.new
69+
fortune.id = 0
70+
fortune.message = "Additional fortune added at request time."
71+
@fortunes << fortune
7272
@fortunes.sort_by!(&:message)
7373

7474
render_html :fortunes

0 commit comments

Comments
 (0)