【发布时间】:2015-04-29 13:36:57
【问题描述】:
我正在尝试将guard 的--listen-on 选项与here 概述的vagrant 一起使用,但我无法让它工作。
如果我将config.vm.network :forwarded_port, guest: 4000, host: 4000 添加到我的Vagrantfile 并随后尝试使用listen -f 127.0.0.1:4000 开始收听,我会收到错误:Broadcaster.initialize: Address already in use - bind(2) for "127.0.0.1" port 4000。
如果我尝试开始听并且然后开始流浪,流浪者同样会抱怨:
Vagrant 无法转发此 VM 上的指定端口,因为它们 会与已经在监听的其他应用程序发生冲突 在这些端口上。转发到 4000 的端口已经在使用中 在主机上。
所以我在Vagrantfile中省略了端口4000转发的同时尝试了一些其他的东西:
如果我在Vagrantfile 中省略了端口 4000 转发,那么我可以使用listen -f 127.0.0.1:4000 成功开始监听。但是当我在我的 vagrant guest 中运行 guard -o "10.0.2.2:4000" -w "/home/me/my_project/" 时,当文件更改时,guard 不会做任何事情。在listen 调用中添加-v 标志表明更改正在在主机上正确获取。
我还尝试了主机上的listen -f 10.11.12.1:4000 与来宾上的guard -o "10.11.12.1:4000" -w "/home/me/my_project/" 结合,结果相同,当文件更改时,Guard 不做任何事情。
将listen -f 127.0.0.1:4000 与guard -o "10.11.12.1:4000" -w "/home/me/my_project/" 结合使用会导致守卫无法连接。
我也尝试过使用 ssh 进行端口转发:
listen -vf 127.0.0.1:4000 # host
ssh -R 4000:localhost:4000 vagrant@10.11.12.13 # connect
guard -o "127.0.0.1:4000" -w "/home/me/my_project" # guest
一切似乎都可以进行端口转发,但是当文件更改时,Guard 再一次不会做任何事情。
主机和访客都是ubuntu 14.04。
我Vagrantfile中的网络配置如下:
config.vm.network 'forwarded_port', guest: 80, host: 3000
config.vm.network 'private_network', ip: '10.11.12.13'
完成这项工作的正确方法是什么?
【问题讨论】:
标签: ruby-on-rails rspec vagrant guard