// Run the harness, which listens for requests and proxies them to the app // server, which it runs and rebuilds as necessary. func (h *Harness) Run() { watcher = revel.NewWatcher() watcher.Listen(h, revel.CodePaths...) go func() { addr := fmt.Sprintf("%s:%d", revel.HttpAddr, revel.HttpPort) revel.INFO.Printf("Listening on %s", addr) var err error if revel.HttpSsl { err = http.ListenAndServeTLS(addr, revel.HttpSslCert, revel.HttpSslKey, h) } else { err = http.ListenAndServe(addr, h) } if err != nil { revel.ERROR.Fatalln("Failed to start reverse proxy:", err) } }() // Kill the app on signal. ch := make(chan os.Signal) signal.Notify(ch, os.Interrupt, os.Kill) <-ch if h.app != nil { h.app.Kill() } os.Exit(1) }
// Run the harness, which listens for requests and proxies them to the app // server, which it runs and rebuilds as necessary. func (h *Harness) Run() { var paths []string if revel.Config.BoolDefault("watch.gopath", false) { gopaths := filepath.SplitList(build.Default.GOPATH) paths = append(paths, gopaths...) } paths = append(paths, revel.CodePaths...) watcher = revel.NewWatcher() watcher.Listen(h, paths...) go func() { addr := fmt.Sprintf("%s:%d", revel.HttpAddr, revel.HttpPort) revel.INFO.Printf("Listening on %s", addr) var err error if revel.HttpSsl { err = http.ListenAndServeTLS(addr, revel.HttpSslCert, revel.HttpSslKey, h) } else { err = http.ListenAndServe(addr, h) } if err != nil { revel.ERROR.Fatalln("Failed to start reverse proxy:", err) } }() // Kill the app on signal. ch := make(chan os.Signal) signal.Notify(ch, os.Interrupt, os.Kill) <-ch if h.app != nil { h.app.Kill() } os.Exit(1) }