GitHub Action中MailCatcher安装突发失败求助
解决GitHub Action中MailCatcher启动失败的LoadError问题
问题根源
你遇到的cannot load such file -- mail/indifferent_hash错误,核心原因是MailCatcher 0.8.2与最新版mail gem(2.8.0+)不兼容。mail 2.8.0及以上版本移除了mail/indifferent_hash模块,而MailCatcher 0.8.2的代码仍依赖该模块,导致启动时加载失败。
解决方案
方案1:锁定mail gem的兼容版本
在安装MailCatcher前,先安装2.7.x系列的mail gem(该版本保留了mail/indifferent_hash模块),再安装MailCatcher:
- name: Install & run mailcatcher run: | sudo gem install mail -v '~>2.7.1' --no-update-sources --no-document sudo gem install mailcatcher --no-update-sources --no-document mailcatcher
方案2:用Bundler管理依赖(更稳定)
通过Gemfile明确指定依赖版本,避免自动拉取不兼容的最新版gem:
- name: Install & run mailcatcher with Bundler run: | sudo gem install bundler --no-update-sources --no-document # 创建Gemfile定义兼容依赖 cat > Gemfile << EOF source 'https://rubygems.org' gem 'mailcatcher', '0.8.2' gem 'mail', '~>2.7.1' EOF bundle install --without development test bundle exec mailcatcher
验证逻辑
mail 2.7.x系列完全匹配MailCatcher 0.8.2的依赖需求,两种方案都能规避版本冲突问题,无需更换Ubuntu或Ruby版本即可解决启动失败问题。
内容的提问来源于stack exchange,提问作者maidan
相关产品推荐
相关产品推荐

