You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github Actions中bundle exec rubocop执行失败但本地运行正常如何解决

问题根因
  • 你的项目根目录下的.rubocop.yml配置中继承了rubocop-discourse提供的规则,该gem未被CI环境安装
  • CI环境中设置了RAILS_ENV: test,Bundler默认会跳过development组的依赖安装,而你本地通常默认安装所有组的依赖,且rubocop系列gem一般都放在development组中,所以本地运行正常,CI报错
解决方案

方案1:修改CI配置,安装所有Bundler组依赖

修改ruby/setup-ruby步骤的参数,明确不排除任何组的依赖,修改后的工作流对应部分如下:

- uses: ruby/setup-ruby@v1
  with:
    bundler-cache: true
    bundler_without: "" # 清空排除的组,安装所有Gemfile中声明的依赖

方案2:调整Gemfile的gem分组

如果不想在CI中安装development组的其他无关依赖,可以将rubocop、rubocop-discourse等代码检查相关的gem从development组移动到test组,修改后重新提交Gemfile和Gemfile.lock即可。

方案3:单独在CI执行rubocop前安装依赖

也可以在RuboCop步骤前增加一行手动安装对应gem的命令:

- name: Install rubocop extensions
  run: gem install rubocop-discourse
- name: RuboCop
  run: bundle exec rubocop
额外排查项
  • 确认你已经将Gemfile.lock提交到代码仓库,ruby/setup-ruby的依赖缓存逻辑基于该文件,缺失会导致CI安装的依赖版本和本地不一致
  • 确认你的.rubocop.yml中没有引用其他未在Gemfile中声明的rubocop扩展gem

内容的提问来源于stack exchange,提问作者A. KUMAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:15:05