用途:当任务涉及让 Rails Engine 跨框架版本和宿主环境保持稳定时使用本技能。兼容性工作应减少对宿主应用的意外影响,优先明确支持目标而非偶然兼容。
主要能力与检查点: Zeitwerk:文件路径需与常量名一致,避免匿名或根级常量。 gemspec 边界:add_dependency 与 required_ruby_version 需与已测试版本匹配。 特性检测:使用 respond_to?、defined? 或适配层,而非直接检查 Rails.version。 测试矩阵:CI 需覆盖所有声明的 Rails/Ruby 组合。 其他重点:初始化钩子的加载与重载行为、废弃的 Rails API、中间件/railtie 钩子、引擎资源与预编译、迁移兼容性、版本间配置默认值变化。
核心检查:声明支持的 Ruby 与 Rails 版本;检查 Zeitwerk 自动加载预期;检查初始化器在启动与重载时的行为;检查 gemspec 依赖边界;检查 jobs、mailers、assets、routes 等可选集成;确认测试矩阵与支持策略一致。
规则:不为未测试版本声明支持;依赖约束要诚实且足够狭窄;优先特性检测或适配层而非版本分支;若必须按版本分支,需隔离并测试两条路径。
常见问题:文件命名与 Zeitwerk 不兼容;gemspec 约束过宽且无矩阵覆盖;废弃的初始化钩子;仅假设单一资源栈;仅在一个 Rails 版本测试而 README 声称支持多个。
输出风格:说明目标支持矩阵、列出最可能的断点、在隔离可测试的接缝处做兼容性修改、在缺少矩阵覆盖时建议补充。
可衔接技能:rails-engine-testing(测试矩阵与 CI)、rails-engine-author(结构、宿主契约、命名空间)、rails-engine-release(版本、变更日志、升级说明)。
限制:资料未提供具体安装命令、收费或平台信息;实际支持的版本范围需以项目自身测试矩阵为准。