gpt4 book ai didi

ruby-on-rails - 守卫 --listen-on with vagrant

转载 作者:行者123 更新时间:2023-12-04 05:37:18 28 4
gpt4 key购买 nike

我正在尝试使用 guard 的 --listen-on带有 vagrant 的选项,如概述 here ,但我无法让它工作。

如果我添加 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,vagrant 会发出类似的提示:

Vagrant cannot forward the specified ports on this VM, since they would collide with some other application that is already listening on these ports. The forwarded port to 4000 is already in use on the host machine.



所以我尝试了一些其他的东西,同时省略了 Vagrantfile 中的端口 4000 转发。 :

如果我在 Vagrantfile 中省略端口 4000 转发,然后我可以成功地开始听 listen -f 127.0.0.1:4000 .但是当我运行时 guard -o "10.0.2.2:4000" -w "/home/me/my_project/"在我的 Vagrant 客人中,当文件更改时,守卫不做任何事情。添加 -v标志到 listen调用显示正在主机上正确获取更改。

我也试过 listen -f 10.11.12.1:4000在主机上结合 guard -o "10.11.12.1:4000" -w "/home/me/my_project/"当文件更改时,在具有相同保护结果的 guest 上不做任何事情。

合并 listen -f 127.0.0.1:4000guard -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 永远不会做任何事情。

主机和 guest 都是ubuntu 14.04。

我的 Vagrantfile 中的网络配置如下:
config.vm.network 'forwarded_port', guest: 80,   host: 3000
config.vm.network 'private_network', ip: '10.11.12.13'

使这项工作的正确方法是什么?

最佳答案

更新 2:

Listen 3.x 不再包含 TCP 功能(请参阅 https://github.com/guard/listen/issues/258 ),因此您需要锁定到 2.x,例如在您的 Gemfile :

gem 'listen', '~> 2.9'

然后按照以下说明操作:

更新 1:

对于 guard >= v2.7.0 才能工作,你需要 listen >= v2.9.0 和魔法 -r选项(因为主机和 guest 的完整路径不匹配):
listen -r -f 10.11.12.1:4000 # on the host (note "-r" option)
guard -o 10.11.12.1:4000 # on the guest (paths relative, so no prob)

笔记:
  • guard v2.7.0, -w仅用于监听多个目录。相反,在您正在观看的目录中运行 listen
  • 我只会在您位于防火墙后面时才考虑使用 Vargrant/ssh 转发,或者由于某种原因您不能使用给定的端口 - 而是使用 VM 分配的 IP 和网络(例如 10.11.12.1)
  • 用于调试 guard ,结帐:https://github.com/guard/guard/wiki/Understanding-Guard (值得一看)
  • 在 127.0.0.1 上运行监听 TCP 服务器毫无意义(除非您必须使用复杂的 ssh 端口转发设置)
  • 关于ruby-on-rails - 守卫 --listen-on with vagrant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28754943/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com