Skip to content

Commit a08216d

Browse files
Merge pull request #357 from ytti/fix/349-puma-process-name
Stop puma from renaming the process and reacting on signals
2 parents 5643da3 + 911c29f commit a08216d

11 files changed

Lines changed: 138 additions & 32 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,4 @@ Gemfile.lock
5353
# npm files
5454
/node_modules/
5555
/.rake_tasks~
56+
.vscode/settings.json

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
1212
- Update weblibs to the latest version
1313

1414
### Fixed
15-
15+
- Run puma directly, so that it does not rename the oxidized process.
16+
Fixes: 349 (@robertcheramy)
1617

1718
## [0.16.0 - 2025-03-25]
1819
This release introduces the possibility for an extended configuration of

lib/oxidized/web.rb

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,73 @@
1+
# frozen_string_literal: true
2+
13
require 'json'
4+
require 'puma'
25

36
module Oxidized
47
module API
58
class Web
6-
require 'rack/handler/puma'
9+
include SemanticLogger::Loggable
10+
711
attr_reader :thread
812

13+
DEFAULT_HOST = '127.0.0.1'
14+
DEFAULT_PORT = 8888
15+
DEFAULT_URI_PREFIX = ''
16+
917
def initialize(nodes, configuration)
1018
require 'oxidized/web/webapp'
11-
if configuration.instance_of? Asetus::ConfigStruct
12-
# New configuration syle: extensions.oxidized-web
13-
addr = configuration.listen? || '127.0.0.1'
14-
port = configuration.port? || 8888
15-
uri = configuration.url_prefix? || ''
16-
vhosts = configuration.vhosts? || []
17-
else
18-
# Old configuration stlyle: "rest: 127.0.0.1:8888/prefix"
19-
listen, uri = configuration.split '/'
20-
addr, _, port = listen.rpartition ':'
21-
unless port
22-
port = addr
23-
addr = nil
24-
end
25-
vhosts = []
26-
end
27-
uri = "/#{uri}"
28-
@opts = {
29-
Host: addr,
30-
Port: port
31-
}
19+
@addr, @port, uri_prefix, vhosts = self.class.parse_configuration(configuration)
20+
uri_prefix = "/#{uri_prefix}"
3221
WebApp.set :nodes, nodes
3322
WebApp.set :host_authorization, { permitted_hosts: vhosts }
3423
@app = Rack::Builder.new do
35-
map uri do
24+
map uri_prefix do
3625
run WebApp
3726
end
3827
end
3928
end
4029

4130
def run
4231
@thread = Thread.new do
43-
Rack::Handler::Puma.run @app, **@opts
44-
exit!
32+
@server = Puma::Server.new @app
33+
@server.add_tcp_listener @addr, @port
34+
logger.info "Oxidized-web server listening on #{@addr}:#{@port}"
35+
@server.run.join
4536
end
4637
end
38+
39+
def self.parse_configuration(configuration)
40+
if configuration.instance_of? Asetus::ConfigStruct
41+
parse_new_configuration(configuration)
42+
else
43+
parse_legacy_configuration(configuration)
44+
end
45+
end
46+
47+
# New configuration style: extensions.oxidized-web
48+
def self.parse_new_configuration(configuration)
49+
addr = configuration.listen? || DEFAULT_HOST
50+
port = configuration.port? || DEFAULT_PORT
51+
uri_prefix = configuration.url_prefix? || DEFAULT_URI_PREFIX
52+
vhosts = configuration.vhosts? || []
53+
54+
[addr, port, uri_prefix, vhosts]
55+
end
56+
57+
# Legacy configuration style: "rest: 127.0.0.1:8888/prefix"
58+
def self.parse_legacy_configuration(configuration)
59+
listen, uri_prefix = configuration.split('/', 2)
60+
addr, _, port = listen.rpartition ':'
61+
unless port
62+
port = addr
63+
addr = nil
64+
end
65+
port = port.to_i
66+
uri_prefix ||= DEFAULT_URI_PREFIX
67+
vhosts = []
68+
69+
[addr, port, uri_prefix, vhosts]
70+
end
4771
end
4872
end
4973
end

oxidized-web.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
2626
s.add_dependency 'htmlentities', '~> 4.3'
2727
s.add_dependency 'json', '~> 2.3'
2828
s.add_dependency 'ostruct', '~> 0.6'
29-
s.add_dependency 'oxidized', '~> 0.31'
29+
s.add_dependency 'oxidized', '~> 0.34.0'
3030
s.add_dependency 'puma', '>= 3.11.4'
3131
s.add_dependency 'sinatra', '>= 1.4.6'
3232
s.add_dependency 'sinatra-contrib', '>= 1.4.6'

spec/spec_helper.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
require 'minitest/autorun'
88
require 'rack/test'
99
require 'oxidized'
10+
require 'oxidized/web'
1011
require 'oxidized/web/webapp'
1112
require 'mocha/minitest'
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
require_relative 'spec_helper'
1+
require_relative '../spec_helper'
22

33
describe Oxidized::API::WebApp do
44
include Rack::Test::Methods
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
require_relative 'spec_helper'
1+
require_relative '../spec_helper'
22

33
describe Oxidized::API::WebApp do
44
include Rack::Test::Methods
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
require_relative 'spec_helper'
1+
require_relative '../spec_helper'
22
require 'json'
33

44
describe Oxidized::API::WebApp do
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
require_relative 'spec_helper'
1+
require_relative '../spec_helper'
22

33
describe Oxidized::API::WebApp do
44
include Rack::Test::Methods
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
require_relative 'spec_helper'
1+
require_relative '../spec_helper'
22

33
# Test helper methods in Oxidized::API::WebApp
44

0 commit comments

Comments
 (0)