Module: ReactOnRails::NodeRendererProcfile

Defined in:
lib/react_on_rails/node_renderer_procfile.rb

Constant Summary collapse

DEV_RENDERER_COMMAND =
"node-renderer: RENDERER_LOG_LEVEL=${RENDERER_LOG_LEVEL:-debug} " \
"RENDERER_PORT=${RENDERER_PORT:-3800} node renderer/node-renderer.js"
DEFAULT_COMMANDS =
{
  # HMR dev and static-asset dev use the same renderer config.
  "Procfile.dev" => DEV_RENDERER_COMMAND,
  "Procfile.dev-static-assets" => DEV_RENDERER_COMMAND,
  "Procfile.dev-prod-assets" =>
    "node-renderer: RAILS_ENV=${RAILS_ENV:-development} " \
    "RENDERER_LOG_LEVEL=${RENDERER_LOG_LEVEL:-info} RENDERER_PORT=${RENDERER_PORT:-3800} " \
    "node renderer/node-renderer.js"
}.freeze
PROCESS_WITH_RENDERER_PORT_REGEX =

Matches a Procfile process line that both (a) sets RENDERER_PORT via env var AND (b) starts a recognized Node Renderer command. Hard-coded ports intentionally do not match — doctor always nudges users toward the RENDERER_PORT env-var idiom the generator writes (overridable, self-documenting). The recognized-command branch mirrors NODE_RENDERER_PROCESS_REGEX in pro_setup.rb so the doctor accepts the same set of invocations the generator does (pnpm/npm/yarn with optional ‘run`).

%r{
  ^[ \t]*[^:\s]+:
  (?=[^\n]*\bRENDERER_PORT\b)
  (?=[^\n]*(?:\bnode\s+\.?/?(?:renderer|client)/node-renderer\.js\b|
             \b(?:pnpm|npm|yarn)\s+(?:run\s+)?node-renderer\b))
}x
NEW_RENDERER_SCRIPT_PATH =
"renderer/node-renderer.js"
LEGACY_RENDERER_SCRIPT_PATH =
"client/node-renderer.js"

Class Method Summary collapse

Class Method Details

.command_for(procfile, renderer_script: NEW_RENDERER_SCRIPT_PATH) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/react_on_rails/node_renderer_procfile.rb', line 35

def self.command_for(procfile, renderer_script: NEW_RENDERER_SCRIPT_PATH)
  # Unknown launchers default to the standard dev command so doctor can still show a useful manual fix.
  base = DEFAULT_COMMANDS.fetch(procfile) { DEFAULT_COMMANDS.fetch("Procfile.dev") }
  return base if renderer_script == NEW_RENDERER_SCRIPT_PATH

  base.sub(NEW_RENDERER_SCRIPT_PATH, renderer_script)
end