Skip to content

Commit 53c62ee

Browse files
committed
Avoid killing OSS renderer-derived port
1 parent 4dce031 commit 53c62ee

2 files changed

Lines changed: 21 additions & 5 deletions

File tree

react_on_rails/lib/react_on_rails/dev/server_manager.rb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,16 @@ def kill_processes
6363
# derived ports when REACT_ON_RAILS_BASE_PORT / CONDUCTOR_PORT is set,
6464
# so `bin/dev kill` in a worktree on ports 5000/5001/5002 targets the
6565
# right ports instead of the 3000/3001 default. Falls back to
66-
# [3000, 3001] when no base port is configured, plus the default
67-
# renderer port when Pro renderer support is active. Uses PortSelector's
68-
# pure #base_port_hash so no "Base port detected" banner prints during
69-
# a kill.
66+
# [3000, 3001] when no base port is configured, plus the renderer port
67+
# when Pro renderer support is active. Uses PortSelector's pure
68+
# #base_port_hash so no "Base port detected" banner prints during a kill.
7069
def killable_ports
7170
base = PortSelector.base_port_hash
7271
return pro_renderer_active? ? [3000, 3001, 3800] : [3000, 3001] unless base
7372

74-
[base[:rails], base[:webpack], base[:renderer]]
73+
ports = [base[:rails], base[:webpack]]
74+
ports << base[:renderer] if pro_renderer_active?
75+
ports
7576
end
7677

7778
def development_processes

react_on_rails/spec/react_on_rails/dev/server_manager_spec.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,6 +1166,21 @@ def mock_port_selector_defaults
11661166
described_class.kill_processes
11671167
end
11681168

1169+
it "skips the base-port-derived renderer port when Pro renderer support is inactive" do
1170+
allow(ReactOnRails::Dev::PortSelector)
1171+
.to receive(:base_port_hash)
1172+
.and_return({ rails: 5000, webpack: 5001, renderer: 5002, base_port_mode: true })
1173+
allow(described_class).to receive(:pro_renderer_active?).and_return(false)
1174+
# No pattern-based processes so kill_port_processes runs.
1175+
allow(Open3).to receive(:capture2).with("pgrep", any_args).and_return(["", nil])
1176+
1177+
allow(Open3).to receive(:capture2).with("lsof", "-ti", ":5000", err: File::NULL).and_return(["", nil])
1178+
allow(Open3).to receive(:capture2).with("lsof", "-ti", ":5001", err: File::NULL).and_return(["", nil])
1179+
expect(Open3).not_to receive(:capture2).with("lsof", "-ti", ":5002", err: File::NULL)
1180+
1181+
described_class.kill_processes
1182+
end
1183+
11691184
it "targets the default renderer port when Pro renderer support is active without a base port" do
11701185
allow(ReactOnRails::Dev::PortSelector).to receive(:base_port_hash).and_return(nil)
11711186
allow(described_class).to receive(:pro_renderer_active?).and_return(true)

0 commit comments

Comments
 (0)