Module: ViteReact::NodeServerManager

Defined in:
lib/vite_react/node_manager.rb

Class Method Summary collapse

Class Method Details

.start!Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/vite_react/node_manager.rb', line 4

def start!
  return if @started
  @started = true

  node_executable = ViteReact.config.node_path ||
                    `which bun`.strip
  unless node_executable && !node_executable.empty?
    Rails.logger.error("Node executable not found. SSR functionality disabled.")
    return
  end

  server_script = File.expand_path("/node/ssr-server.ts", __FILE__)
  port = ViteReact.config.node_server_port
  command = "#{node_executable} #{server_script} --expirimental-strip-types --port=#{port}"
  Rails.logger.info("Starting vite_react_ssr Node server with: #{command}")

  @pid = Process.spawn(command, out: "/dev/null", err: "/dev/null")
  Rails.logger.info("vite_react_ssr Node server started with pid: #{@pid}")

  sleep 1

  at_exit { stop! }
rescue => e
  Rails.logger.error("Failed to start vite_react_ssr Node server: #{e.message}")
end

.stop!Object



30
31
32
33
34
35
36
# File 'lib/vite_react/node_manager.rb', line 30

def stop!
  return unless @pid
  Rails.logger.info("Stopping vite_react_ssr Node server (pid: #{@pid})")
  Process.kill("TERM", @pid)
rescue => e
  Rails.logger.error("Error stopping vite_react_ssr Node server: #{e.message}")
end