我正在尝试运行Jenkins的Cucumber(Ruby 2.3)测试套件,测试2-4字节UTF-8字符是否为组的有效名称。
我尝试了很多解决方案,并且一直在寻找试图找到与我相关的问题的日子。
一直困扰着我的错误是:
incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)
这是指我尝试在我创建组的计算机上向CLI发送ssh命令的行:
$mymachine.cli_ssh.exec!("config group create --name='#{group_name}'")
exec!()
命令中存在的位置:
command.force_encoding("UTF-8")
仅当我发送2-4个字节的UTF-8字符时才会出现错误,例如:
组'abcd'不会导致错误 和 群组'ЯЯЯ'会导致错误
问题:
在我的本地Ubuntu机器上运行这个脚本完全正常(Ruby 2.2.1),以及我所在地区的其他机器。 (这就是为什么我认为没有必要提供比给定的代码更多的代码)。我知道编译到UTF-8有一个变化,跳转到Ruby 2.0,但两台机器都已经过去,所以我不认为这是问题所在。
我已经尝试在Jenkins机器上以en_US.UTF-8的形式建立系统区域设置作为区域设置系统变量并在/.bashrc文件中。我在哪里看到编码变量设置为ASCII-8BIT。
我还尝试在脚本执行之前从Jenkins shell导出系统区域设置。
我需要一些答案,或者某些方向可以帮助我解决这个问题。
答案 0 :(得分:0)
通过更新Jenkins系统上的所有Ruby宝石解决了这个问题。某些宝石可能已经过时了,即使它们在技术上与Jenkins机器运行的Ruby版本兼容,因此,可能存在非UTF8的Ruby代码。
如果您将来遇到此问题,我建议您确保所有gem和ruby版本在Jenkins机器和工作机器之间保持一致。