vagrant rsync-auto 代码同步失败报错:UndefinedConversionError

今天使用vagrant ,代码同步:vagrant rsync-auto 发现代码同步失效了,几次重启之后发现启动报错:

有点疑惑,因为1h之前还同步过修改的代码,现在突然报错,目前仍然不明原因(这1h之内没有做过任何编码设置/修改的操作,仍然诡异,留待大神研究吧~)以下直接说重点

报错的原因

vagrant的源码使用Ruby实现的,Ruby 转码的方法:encode 有转码兼容,GBK转码为UTF-8不兼容,所以报错,报错行的源代码:

data << io.readpartial(READ_CHUNK_SIZE).encode(“UTF-8”, Encoding.default_external)

解决方法

思路:将参数用 force_encoding方法 强制转换成UTF-8编码即可

方法:找到报错的目录:C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.7.2\lib\vagrant\util io.rb文件找到line 32,将代码修改为:

data << io.readpartial(READ_CHUNK_SIZE).force_encoding(‘UTF-8’)

然后vagrant reload 没有报错,重启成功,代码同步成功。这是vagrant的一个bug。



说说这里面的曲折过程,最开始发现这个错误以后,我将错误提示:”from GBK to UTF-8”理解成:

要转码为UTF-8必须要求原编码是GBK,所以我改了io.rb中出错的源码成这个样子:

str = io.readpartial(READ_CHUNK_SIZE).force_encoding(‘GBK’) //强制转换为GBK

data << str .encode(“UTF-8”, Encoding.default_external) //将GBK转换为UTF-8

这样还是报错,然后我看到转码的encode有编码兼容,所以使用强制转换的方式转换为UTF-8,果然还是简单粗暴比较好呀~~

附上一句:解决了这个问题我好开心呀,离大神又进了一步~~

时间: 2024-12-28 10:31:08

vagrant rsync-auto 代码同步失败报错:UndefinedConversionError的相关文章

git同步遇到报错“fatal: unable to access &#39;https://github.com/ruanwenwu/newp.git/&#39;: Peer reports incompatible or unsupported protocol version.”

git同步遇到报错"fatal: unable to access 'https://github.com/ruanwenwu/newp.git/': Peer reports incompatible or unsupported protocol version." 网上很多人说是因为git版本需要升级.我将git版本升级到最新, [[email protected] tp5test]# git --version git version 2.16.2 问题却依然存在. 最后: y

git同步遇到报错“fatal: unable to access &#39;https://github.com/lizhong24/mysite2.git/&#39;: Peer reports incompatible or unsupported protocol version.”

git同步遇到报错"fatal: unable to access 'https://github.com/lizhong24/mysite2.git/': Peer reports incompatible or unsupported protocol version." 解决办法: yum update -y nss curl libcurl 问题解决了. git同步遇到报错"fatal: unable to access 'https://github.com/liz

Windows Essentials Movie Maker 安装失败报错 ——问题解决

Windows Essentials Movie Maker 安装失败报错: (软件包名: wlsetup-all.exe) 查到官方论坛给出了一些回复: https://social.technet.microsoft.com/Forums/windows/en-US/583637d8-434d-4fb6-9abd-b86820cd96dc/unable-to-install-windows-live-2012-into-windows-10-amp-windows-81error0x800c

refiling失败报错Invalid function: org-preserve-local-variables

refiling失败报错Invalid function: org-preserve-local-variables,原因: elc,不太清楚 解决办法: 删除org??目录下的elc文件 https://github.com/syl20bnr/spacemacs/issues/11801 https://emacs-china.org/t/spacemacs-org-mode-org-refile/8157 在github上已经有了相关的Issue, #11788 #11801 解决方案如下:

关于socket模块获取ip失败报错

问题:socket模块获取ip失败报错 In [64]: import socket In [71]: socket.gethostname() Out[71]: 'web01' In [72]: host_name = socket.gethostname() In [73]: socket.gethostbyname(host_name) --------------------------------------------------------------------------- g

Linux进行AES加密每次结果都不一致并且解密失败报错

1. 现象 windows操作系统下进行"123456"的AES加密 encrypted message is below : QLNYZyjRnKF/zxAjzDt/lw== decrypted message is below : 123456 阿里云服务器,同样是"123456"的密码,每次加密结果都不一样,且不是QLNYZyjRnKF/zxAjzDt/lw==,解密是报错的 2.解决方法 经过检查之后,定位在生成KEY的方法上,如下: public stat

FTP上传失败报错227 Entering Passive Model (222,111,8,111,10,40)

昨天为了一个ftp问题折腾了一天.问题背景:原来有个接口涉及到上传文件,服务端更换了ftp服务器,我们这边需要刷新连接服务端的ip和端口配置,代码没动.联调环境和验收环境都测试通过,一到生产环境就歇菜了.我们手工连接ftp并上传文件正常,就是跑接口由程序上传不行.根据日志信息定位发现在登录ftp后做了两个事情,一个是把传输模式设置为二进制,一个是设置被动模式,用apache的Ftpclient实现: ftpClient.enterLocalPassiveMode(): 从代码层面看不出问题,因为

Android代码中资源文件报错的调试

主要检查以下几项: 1.资源文件本身有没有错: 2.代码中导入的R有没有错: 3.R.java是否正确,里面有没有乱码或编码格式错误等: 4.有没有将本工程的is library勾上,如果本工程不是library project而又将此勾上的话,代码中的资源文件是有可能会报错的:

【Python】xpath中为什么粘贴进去代码后老报错?如何在定位元素的时候准确找到定位切入点?

1. xpath后()中双引号("")里面不能套用双引号(""),把里面的双引号改成单引号('')报错就没有了. 2.如何在定位元素的时候准确找到定位切入点? 要巧妙运用F12,确定要定位的页面元素后,看元素相关属性值是否在页面中的代码中是唯一的(如果有id值可以用id值去定位,一般页面中的id值都是唯一性的),否则可以通过Ctrl+F 将准备试用定位元素的属性值搜索看看该页面是否有相同的值,如果有那么就不能用这个属性值定位,如果没有那么就可以用这个属性值定位啦~这