Browse Source

[Ruby] Misc updates to Sinatra/Sequel benchmarks (#2584)

* [Ruby] Stylistic fidgeting

[ci fw-only Ruby/rack-sequel Ruby/roda-sequel Ruby/sinatra-sequel Ruby/sinatra]

* [Ruby] Fix Sysrandom invocation

[ci fw-only Ruby/sinatra Ruby/sinatra-sequel Ruby/rack-sequel Ruby/roda-sequel]

* [Ruby] Upgrade to Sequel 4.44 and call Sequel::Model.freeze

[ci fw-only Ruby/sinatra Ruby/sinatra-sequel Ruby/rack-sequel Ruby/roda-sequel]

* [Ruby] Bump Sinatra to 2.0 release candidate and add micro op

[ci fw-only Ruby/sinatra Ruby/sinatra-sequel Ruby/rack-sequel Ruby/roda-sequel]
Mike Pastore 8 years ago
parent
commit
a5c5a37268

+ 2 - 2
frameworks/Ruby/rack-sequel/Gemfile

@@ -3,9 +3,9 @@ source 'https://rubygems.org'
 gem 'json', '~> 2.0'
 gem 'passenger', '~> 5.1', :platforms=>[:ruby, :mswin], :require=>false
 gem 'puma', '~> 3.6', :require=>false
-gem 'sequel', '~> 4.43'
+gem 'sequel', '~> 4.44'
 gem 'rack', '~> 2.0'
-gem 'sysrandom', '~> 1.0', :require=>'sysrandom/securerandom'
+gem 'sysrandom', '~> 1.0'
 gem 'torquebox-web', '>= 4.0.0.beta3', '< 5', :platforms=>:jruby, :require=>false
 gem 'unicorn', '~> 5.2', :platforms=>[:ruby, :mswin], :require=>false
 

+ 13 - 11
frameworks/Ruby/rack-sequel/boot.rb

@@ -7,6 +7,18 @@ QUERIES_MIN = 1
 QUERIES_MAX = 500
 SEQUEL_NO_ASSOCIATIONS = true
 
+SERVER_STRING =
+  if defined?(PhusionPassenger)
+    [
+      PhusionPassenger::SharedConstants::SERVER_TOKEN_NAME,
+      PhusionPassenger::VERSION_STRING
+    ].join('/').freeze
+  elsif defined?(Puma)
+    Puma::Const::PUMA_SERVER_STRING
+  elsif defined?(Unicorn)
+    Unicorn::HttpParser::DEFAULTS['SERVER_SOFTWARE']
+  end
+
 Bundler.require(:default) # Load core modules
 
 def connect(dbtype)
@@ -55,14 +67,4 @@ class Fortune < Sequel::Model(:Fortune)
   unrestrict_primary_key
 end
 
-SERVER_STRING =
-  if defined?(PhusionPassenger)
-    [
-      PhusionPassenger::SharedConstants::SERVER_TOKEN_NAME,
-      PhusionPassenger::VERSION_STRING
-    ].join('/').freeze
-  elsif defined?(Puma)
-    Puma::Const::PUMA_SERVER_STRING
-  elsif defined?(Unicorn)
-    Unicorn::HttpParser::DEFAULTS['SERVER_SOFTWARE']
-  end
+Sequel::Model.freeze

+ 5 - 3
frameworks/Ruby/rack-sequel/hello_world.rb

@@ -17,7 +17,7 @@ class HelloWorld
 
   # Return a random number between 1 and MAX_PK
   def rand1
-    Random.rand(MAX_PK).succ
+    Sysrandom.random_number(MAX_PK).succ
   end
 
   def db
@@ -25,7 +25,9 @@ class HelloWorld
   end
 
   def queries(env)
-    Array.new(bounded_queries(env)) { World.with_pk(rand1).values }
+    Array.new(bounded_queries(env)) do
+      World.with_pk(rand1).values
+    end
   end
 
   def fortunes
@@ -55,7 +57,7 @@ class HelloWorld
     fortunes.each do |fortune|
       html += <<~"HTML"
       <tr>
-        <td>#{Rack::Utils.escape_html(fortune.id)}</td>
+        <td>#{fortune.id}</td>
         <td>#{Rack::Utils.escape_html(fortune.message)}</td>
       </tr>
       HTML

+ 2 - 2
frameworks/Ruby/roda-sequel/Gemfile

@@ -4,10 +4,10 @@ gem 'erubi', '~> 1.4'
 gem 'json', '~> 2.0'
 gem 'passenger', '~> 5.1', :platforms=>[:ruby, :mswin], :require=>false
 gem 'puma', '~> 3.6', :require=>false
-gem 'sequel', '~> 4.43'
+gem 'sequel', '~> 4.44'
 gem 'roda', '~> 2.23',
   :git=>'https://github.com/jeremyevans/roda.git', :branch=>'master'
-gem 'sysrandom', '~> 1.0', :require=>'sysrandom/securerandom'
+gem 'sysrandom', '~> 1.0'
 gem 'tilt', '~> 2.0', :require=>'tilt/erb'
 gem 'torquebox-web', '>= 4.0.0.beta3', '< 5', :platforms=>:jruby, :require=>false
 gem 'unicorn', '~> 5.2', :platforms=>[:ruby, :mswin], :require=>false

+ 13 - 11
frameworks/Ruby/roda-sequel/boot.rb

@@ -7,6 +7,18 @@ QUERIES_MIN = 1
 QUERIES_MAX = 500
 SEQUEL_NO_ASSOCIATIONS = true
 
+SERVER_STRING =
+  if defined?(PhusionPassenger)
+    [
+      PhusionPassenger::SharedConstants::SERVER_TOKEN_NAME,
+      PhusionPassenger::VERSION_STRING
+    ].join('/').freeze
+  elsif defined?(Puma)
+    Puma::Const::PUMA_SERVER_STRING
+  elsif defined?(Unicorn)
+    Unicorn::HttpParser::DEFAULTS['SERVER_SOFTWARE']
+  end
+
 Bundler.require(:default) # Load core modules
 
 def connect(dbtype)
@@ -55,14 +67,4 @@ class Fortune < Sequel::Model(:Fortune)
   unrestrict_primary_key
 end
 
-SERVER_STRING =
-  if defined?(PhusionPassenger)
-    [
-      PhusionPassenger::SharedConstants::SERVER_TOKEN_NAME,
-      PhusionPassenger::VERSION_STRING
-    ].join('/').freeze
-  elsif defined?(Puma)
-    Puma::Const::PUMA_SERVER_STRING
-  elsif defined?(Unicorn)
-    Unicorn::HttpParser::DEFAULTS['SERVER_SOFTWARE']
-  end
+Sequel::Model.freeze

+ 4 - 2
frameworks/Ruby/roda-sequel/hello_world.rb

@@ -18,7 +18,7 @@ class HelloWorld < Roda
 
   # Return a random number between 1 and MAX_PK
   def rand1
-    Random.rand(MAX_PK).succ
+    Sysrandom.random_number(MAX_PK).succ
   end
 
   after do
@@ -37,7 +37,9 @@ class HelloWorld < Roda
 
   # Test type 3: Multiple database queries
   static_get '/queries' do
-    Array.new(bounded_queries) { World.with_pk(rand1).values }
+    Array.new(bounded_queries) do
+      World.with_pk(rand1).values
+    end
   end
 
   # Test type 4: Fortunes

+ 3 - 4
frameworks/Ruby/sinatra-sequel/Gemfile

@@ -3,11 +3,10 @@ source 'https://rubygems.org'
 gem 'json', '~> 2.0'
 gem 'passenger', '~> 5.1', :platforms=>[:ruby, :mswin], :require=>false
 gem 'puma', '~> 3.6', :require=>false
-gem 'sequel', '~> 4.43'
-gem 'sinatra', '>= 2.0.0.beta2', '< 3.0', :require=>'sinatra/base',
-  :git=>'https://github.com/sinatra/sinatra.git', :branch=>'master'
+gem 'sequel', '~> 4.44'
+gem 'sinatra', '>= 2.0.0.rc1', '< 3.0', :require=>'sinatra/base'
 gem 'slim', '~> 3.0'
-gem 'sysrandom', '~> 1.0', :require=>'sysrandom/securerandom'
+gem 'sysrandom', '~> 1.0'
 gem 'torquebox-web', '>= 4.0.0.beta3', '< 5', :platforms=>:jruby, :require=>false
 gem 'unicorn', '~> 5.2', :platforms=>[:ruby, :mswin], :require=>false
 

+ 13 - 11
frameworks/Ruby/sinatra-sequel/boot.rb

@@ -7,6 +7,18 @@ QUERIES_MIN = 1
 QUERIES_MAX = 500
 SEQUEL_NO_ASSOCIATIONS = true
 
+SERVER_STRING =
+  if defined?(PhusionPassenger)
+    [
+      PhusionPassenger::SharedConstants::SERVER_TOKEN_NAME,
+      PhusionPassenger::VERSION_STRING
+    ].join('/').freeze
+  elsif defined?(Puma)
+    Puma::Const::PUMA_SERVER_STRING
+  elsif defined?(Unicorn)
+    Unicorn::HttpParser::DEFAULTS['SERVER_SOFTWARE']
+  end
+
 Bundler.require(:default) # Load core modules
 
 def connect(dbtype)
@@ -55,14 +67,4 @@ class Fortune < Sequel::Model(:Fortune)
   unrestrict_primary_key
 end
 
-SERVER_STRING =
-  if defined?(PhusionPassenger)
-    [
-      PhusionPassenger::SharedConstants::SERVER_TOKEN_NAME,
-      PhusionPassenger::VERSION_STRING
-    ].join('/').freeze
-  elsif defined?(Puma)
-    Puma::Const::PUMA_SERVER_STRING
-  elsif defined?(Unicorn)
-    Unicorn::HttpParser::DEFAULTS['SERVER_SOFTWARE']
-  end
+Sequel::Model.freeze

+ 7 - 5
frameworks/Ruby/sinatra-sequel/hello_world.rb

@@ -1,9 +1,7 @@
 # frozen_string_literal: true
 
 # Configure Slim templating engine
-Slim::Engine.set_options \
-  :format=>:html,
-  :sort_attrs=>false
+Slim::Engine.set_options :format=>:html, :sort_attrs=>false
 
 # Our Rack application to be executed by rackup
 class HelloWorld < Sinatra::Base
@@ -34,7 +32,7 @@ class HelloWorld < Sinatra::Base
 
     # Return a random number between 1 and MAX_PK
     def rand1
-      Random.rand(MAX_PK).succ
+      Sysrandom.random_number(MAX_PK).succ
     end
   end
 
@@ -58,7 +56,11 @@ class HelloWorld < Sinatra::Base
 
   # Test type 3: Multiple database queries
   get '/queries' do
-    json Array.new(bounded_queries) { World.with_pk(rand1).values }
+    worlds = Array.new(bounded_queries) do
+      World.with_pk(rand1).values
+    end
+
+    json worlds
   end
 
   # Test type 4: Fortunes

+ 2 - 3
frameworks/Ruby/sinatra/Gemfile

@@ -5,9 +5,8 @@ gem 'activerecord-jdbc-adapter', '>= 5.0.pre1', '< 6.0', :platforms=>:jruby
 gem 'json', '~> 2.0'
 gem 'passenger', '~> 5.1', :platforms=>[:ruby, :mswin], :require=>false
 gem 'puma', '~> 3.6', :require=>false
-gem 'sinatra', '>= 2.0.0.beta2', '< 3.0', :require=>'sinatra/base',
-  :git=>'https://github.com/sinatra/sinatra.git', :branch=>'master'
-gem 'sysrandom', '~> 1.0', :require=>'sysrandom/securerandom'
+gem 'sinatra', '>= 2.0.0.rc1', '< 3.0', :require=>'sinatra/base'
+gem 'sysrandom', '~> 1.0'
 gem 'torquebox-web', '>= 4.0.0.beta3', '< 5', :platforms=>:jruby, :require=>false
 gem 'unicorn', '~> 5.2', :platforms=>[:ruby, :mswin], :require=>false
 

+ 12 - 12
frameworks/Ruby/sinatra/boot.rb

@@ -6,6 +6,18 @@ MAX_PK = 10_000
 QUERIES_MIN = 1
 QUERIES_MAX = 500
 
+SERVER_STRING =
+  if defined?(PhusionPassenger)
+    [
+      PhusionPassenger::SharedConstants::SERVER_TOKEN_NAME,
+      PhusionPassenger::VERSION_STRING
+    ].join('/').freeze
+  elsif defined?(Puma)
+    Puma::Const::PUMA_SERVER_STRING
+  elsif defined?(Unicorn)
+    Unicorn::HttpParser::DEFAULTS['SERVER_SOFTWARE']
+  end
+
 Bundler.require(:default) # Load core modules
 
 def connect(dbtype)
@@ -50,15 +62,3 @@ class Fortune < ActiveRecord::Base
 end
 
 ActiveRecord::Base.clear_active_connections!
-
-SERVER_STRING =
-  if defined?(PhusionPassenger)
-    [
-      PhusionPassenger::SharedConstants::SERVER_TOKEN_NAME,
-      PhusionPassenger::VERSION_STRING
-    ].join('/').freeze
-  elsif defined?(Puma)
-    Puma::Const::PUMA_SERVER_STRING
-  elsif defined?(Unicorn)
-    Unicorn::HttpParser::DEFAULTS['SERVER_SOFTWARE']
-  end

+ 1 - 1
frameworks/Ruby/sinatra/hello_world.rb

@@ -29,7 +29,7 @@ class HelloWorld < Sinatra::Base
 
     # Return a random number between 1 and MAX_PK
     def rand1
-      Random.rand(MAX_PK).succ
+      Sysrandom.random_number(MAX_PK).succ
     end
   end
 

+ 1 - 1
frameworks/Ruby/sinatra/views/fortunes.erb

@@ -5,7 +5,7 @@
 </tr>
 <% @fortunes.each do |fortune| %>
 <tr>
-  <td><%= Rack::Utils.escape_html(fortune.id) %></td>
+  <td><%= fortune.id %></td>
   <td><%= Rack::Utils.escape_html(fortune.message) %></td>
 </tr>
 <% end %>