I'm new to using Go and have a working script which doesn't run when using this Guard plugin. By that I mean: the output I get from the Go program, I would expect to see that same output again after the Go program is re-executed by Guard. But I don't I see any output from my Go program at all when running under this Guard plugin.
If I run my Go program like so: go run Concurrency/2.go then I typically see the following output:
I'm listening!
This is boring! 0
This is boring! 1
This is boring! 2
This is boring! 3
This is boring! 4
This is boring! 5
You're boring; I'm leaving.
I would expect to see that same output when the relevant file was re-executed by Guard. But I don't see any such output.
The following is the structure of my Go directory...
Note that I'm not developing a proper Go application; it's just a collection of miscellaneous files. This is simply because I'm playing around with different Go code and so I'm not building a proper application (e.g. nearly all of the files you see all define a main function, where as in a proper Go application there would only be one file that was the entry point to main - AFAIK).
The script I'm trying to have executed when any other files are edited is Concurrency/2.go and the contents of that file looks like the following:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
go boring("This is boring!")
fmt.Println("I'm listening!")
time.Sleep(2 * time.Second)
fmt.Println("You're boring; I'm leaving.")
}
func boring(msg string) {
for i := 0; ; i++ {
fmt.Println(msg, i)
time.Sleep(time.Duration(rand.Intn(1e3)) * time.Millisecond)
}
}
The Guardfile looks like the following:
guard "go", :server => "Concurrency/2.go" do
watch(%r{^(.+)\.go$}) { |match| puts match }
end
The command I'm running is: bundle exec guard which outputs...
12:11:00 - INFO - Guard is using Tmux to send notifications.
12:11:00 - INFO - Guard is using TerminalTitle to send notifications.
12:11:00 - INFO - Running /Users/markmcdonnell/Box Sync/Library/Go/Concurrency/2.go...
sh: line 0: cd: /Users/markmcdonnell/Box: No such file or directory
12:11:00 - INFO - Started Go app, pid 4167
12:11:00 - INFO - Guard is now watching at '/Users/markmcdonnell/Box Sync/Library/Go'
Notice there is also a problem with the fact that I keep my files sync'ed using Box and that has a space in its directory name and so somewhere the plugin seems to be trying to cd into the directory but can't as the path isn't being escaped properly.
When I edit another file (e.g. examples/constants-example.go) then I see the following output:
[1] guard(main)> ["examples/constants-example.go", "examples/constants-example"]
12:23:08 - INFO - Running /Users/markmcdonnell/Box Sync/Library/Go/Concurrency/2.go...
sh: line 0: cd: /Users/markmcdonnell/Box: No such file or directory
12:23:08 - INFO - Started Go app, pid 4661
So it has watched the set of files correctly; it still tries to cd into a directory incorrectly though. But more importantly I would have expected to have seen the output of the Go problem?
Hi,
I'm new to using Go and have a working script which doesn't run when using this Guard plugin. By that I mean: the output I get from the Go program, I would expect to see that same output again after the Go program is re-executed by Guard. But I don't I see any output from my Go program at all when running under this Guard plugin.
If I run my Go program like so:
go run Concurrency/2.go
then I typically see the following output:I would expect to see that same output when the relevant file was re-executed by Guard. But I don't see any such output.
The following is the structure of my Go directory...
Note that I'm not developing a proper Go application; it's just a collection of miscellaneous files. This is simply because I'm playing around with different Go code and so I'm not building a proper application (e.g. nearly all of the files you see all define a
main
function, where as in a proper Go application there would only be one file that was the entry point tomain
- AFAIK).The script I'm trying to have executed when any other files are edited is
Concurrency/2.go
and the contents of that file looks like the following:The Guardfile looks like the following:
The command I'm running is:
bundle exec guard
which outputs...Notice there is also a problem with the fact that I keep my files sync'ed using Box and that has a space in its directory name and so somewhere the plugin seems to be trying to
cd
into the directory but can't as the path isn't being escaped properly.When I edit another file (e.g.
examples/constants-example.go
) then I see the following output:So it has watched the set of files correctly; it still tries to
cd
into a directory incorrectly though. But more importantly I would have expected to have seen the output of the Go problem?