Windows下用Ceedling创建模块/项目遇Psych别名解析错误求助
解决Ceedling创建项目/模块时的Psych别名解析错误及正确操作步骤
错误原因
这个报错是因为Ruby内置的YAML解析库Psych默认关闭了别名解析功能,但Ceedling的配置模板里用到了YAML别名语法,导致解析失败。
修复方案
临时修复(单次命令生效)
在执行Ceedling命令前,先设置环境变量强制Psych启用别名解析:
- 创建新项目:
set RUBY_YAML_LOADER=psych && ceedling new my_new_project - 创建模块(进入已有项目目录后执行):
set RUBY_YAML_LOADER=psych && ceedling module:create[my_new_module]
永久修复(全局生效)
找到Ceedling安装目录下的lib/ceedling/configurator.rb文件,找到调用Psych.safe_load或Psych.load的代码段,添加aliases: true参数:
比如原代码是:
config = Psych.safe_load(File.read(config_file))
修改为:
config = Psych.safe_load(File.read(config_file), aliases: true)
如果是Psych.load,同样改成:
config = Psych.load(File.read(config_file), aliases: true)
保存文件后,后续所有Ceedling命令都不会再触发这个错误。
正确创建流程
新建Ceedling项目
- 先确认已通过RubyGems安装Ceedling:
gem install ceedling - 打开CMD/PowerShell,切换到目标父目录
- 执行修复后的创建命令,比如:
set RUBY_YAML_LOADER=psych && ceedling new my_project - 命令执行完成后,
my_project文件夹会自动生成,包含默认的项目结构和配置。
在现有项目中创建模块
- 进入项目根目录
- 执行模块创建命令:
set RUBY_YAML_LOADER=psych && ceedling module:create[user_module] - 完成后,
src和test目录下会自动生成对应模块的源文件和测试文件模板。
内容的提问来源于stack exchange,提问作者Raghuvarma Vanapala
相关产品推荐
相关产品推荐

