class Webpacker::DevServerRunner

Public Instance Methods

run() click to toggle source
# File lib/webpacker/dev_server_runner.rb, line 8
def run
  load_config
  detect_port!
  execute_cmd
end

Private Instance Methods

detect_port!() click to toggle source
# File lib/webpacker/dev_server_runner.rb, line 29
def detect_port!
  server = TCPServer.new(@hostname, @port)
  server.close

rescue Errno::EADDRINUSE
  $stdout.puts "Another program is running on port #{@port}. Set a new port in #{@config_file} for dev_server"
  exit!
end
execute_cmd() click to toggle source
# File lib/webpacker/dev_server_runner.rb, line 38
def execute_cmd
  env = { "NODE_PATH" => @node_modules_path.shellescape }
  cmd = [
    "#{@node_modules_path}/.bin/webpack-dev-server",
    "--config", @webpack_config
  ]
  cmd += ["--progress", "--color"] if @pretty

  Dir.chdir(@app_path) do
    exec env, *cmd
  end
end
load_config() click to toggle source
# File lib/webpacker/dev_server_runner.rb, line 15
def load_config
  @config_file = File.join(@app_path, "config/webpacker.yml")
  dev_server = YAML.load_file(@config_file)[ENV["JETS_ENV"]]["dev_server"]

  @hostname          = dev_server["host"]
  @port              = dev_server["port"]
  @pretty            = dev_server.fetch("pretty", true)

rescue Errno::ENOENT, NoMethodError
  $stdout.puts "webpack dev_server configuration not found in #{@config_file}."
  $stdout.puts "Please run jets webpacker:install to install Webpacker"
  exit!
end