deltacloud-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mfoj...@redhat.com
Subject [PATCH core] Core: Added support for jruby Puma server
Date Fri, 01 Mar 2013 10:17:54 GMT
From: Michal Fojtik <mfojtik@redhat.com>

The 'puma' web server is much faster and reliable
than java webrick.

Signed-off-by: Michal fojtik <mfojtik@redhat.com>
---
 server/Gemfile         |  1 +
 server/bin/deltacloudd | 24 +++++++++++++++++-------
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/server/Gemfile b/server/Gemfile
index 4df57fe..bd56845 100644
--- a/server/Gemfile
+++ b/server/Gemfile
@@ -4,6 +4,7 @@ gemspec
 
 platforms :jruby do
   gem 'jruby-openssl'
+  gem 'puma'
 end
 
 group :development do
diff --git a/server/bin/deltacloudd b/server/bin/deltacloudd
index 8cb8702..836bc55 100755
--- a/server/bin/deltacloudd
+++ b/server/bin/deltacloudd
@@ -178,7 +178,6 @@ if !options[:daemon] || options[:daemon] && !have_thin
     msg << ":: http://#{ENV["API_HOST"]}:#{ENV["API_PORT"]}/#{api_uri}"
   end
   puts msg
-  puts
 end
 
 if ENV['API_USER'] && ENV['API_PASSWORD']
@@ -192,11 +191,11 @@ unless have_thin
 
   puts "To start Deltacloud as a daemon, install 'thin' (gem install thin)\n\n" if options[:daemon]
 
+  port = ENV["API_PORT"].to_i
   # Read in config.ru and convert it to an instance of Rack::Builder
   cfgfile = File.read(File.join($top_srcdir, 'config.ru'))
   inner_app = eval("Rack::Builder.new {(" + cfgfile + "\n )}.to_app",
                    nil, 'config.ru')
-
   app = Rack::Builder.new {
     use Rack::CommonLogger # apache-like logging
     use Rack::Reloader #if options[:env] == "development"
@@ -208,11 +207,22 @@ unless have_thin
   port = ENV["API_PORT"].to_i
   puts "=> Ctrl-C to shutdown server"
   Dir::chdir($top_srcdir)
-  Rack::Server::start(:app => app,
-                      :server => :webrick,
-                      :Host => ENV["API_HOST"],
-                      :Port => port,
-                      :AccessLog => [])
+
+  if RUBY_PLATFORM == 'java'
+    require 'puma'
+    events = Puma::Events.new STDOUT, STDERR
+    server = Puma::Server.new app, events
+    server.add_tcp_listener ENV['API_HOST'], port
+    server.run(false)
+  else
+    # There's a bug with string ports on JRuby so convert to int
+    # http://jira.codehaus.org/browse/JRUBY-4868
+    puts "=> Ctrl-C to shutdown server"
+    Rack::Server::start(:app => app,
+                        :Host => ENV["API_HOST"],
+                        :Port => port,
+                        :AccessLog => [])
+  end
 else
   argv_opts = ARGV.clone
   argv_opts << ['start'] unless Thin::Runner.commands.include?(options[0])
-- 
1.8.1.2


Mime
View raw message