你可能正在Github Actions中运行构建,使用setup-ruby动作来安装所选的ruby版本,看起来像这样。
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.0
一周前,这将安装最新的ruby 3.0.x。但从圣诞节发布的ruby 3.1来看,它将安装最新的ruby 3.1.x。
解决办法和/或纠正方法是引用ruby的版本号。如果你真的想得到最新的ruby 3.0.x,说。
with:
ruby-version: '3.0'
这里报告了这个问题,并提到了Github Actions runner本身的这个问题。我不清楚这是否是github actions runner中的任何一种bug,而不仅仅是在YAML中使用数字值的一个意料之外的后果。3.0 当然和3 是同一个数字,对我来说,YAML解析器将它们视为一个bug并不明显。
也许这是一个错误或错误的设计,在setup-ruby 行动。但是,为了代替任何开发人员决定这是一个bug......引用你的3.0 版本号,或者干脆引用所有使用setup-ruby任务的ruby版本号?
如果你的3.0构建开始失败,而你又不知道为什么--这可能是它。诊断起来可能有点混乱,因为我不确定Github Actions输出中的任何东西通常会呼应使用的ruby版本?我想在 "安装Ruby "任务的 "安装Bundler "子标题下有一个线索。
当然,即使你想在ruby 3.0上运行,你的构建也有可能在ruby 3.1上获得成功 我的在LoadError: cannot load such file -- net/smtp ,所以如果你的恰好也是这样,也许你是从google上找到的。) (显然,net/smtp在ruby 3.1中已经被移到了标准gem的不同地位,我没有进一步处理这个问题,因为我还没有刻意支持ruby 3.1)。
请注意,如果你是用Github行动矩阵来构建ruby版本,同样的问题也适用。也许是这样的。
matrix:
include:
- ruby: '3.0'
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}