Redmine邮件配置遇Gemfile解析错误求助(IMAP/POP3收信)
解决Redmine邮件接收命令执行时的Gemfile语法错误问题
问题根源
你遇到的这个语法错误,核心原因是Ruby 1.8.7不支持Gemfile里platforms:这种键值对的新语法——这种带冒号的符号键是Ruby 1.9及以上版本才支持的特性,而你当前使用的Ruby版本是1.8.7,所以Bundler解析Gemfile第31行时直接报错。
另外,你的Bundler版本(1.16.1)和Ruby 1.8.7的兼容性极差,Bundler 1.x后期版本早已不再对Ruby 1.8.7提供适配支持,这也会加重解析失败的概率。
解决方案
这里提供两种可行的处理思路,优先推荐第一种:
1. 升级Ruby版本(长期最优方案)
Redmine的稳定版本早已不再兼容Ruby 1.8.7,升级到Ruby 2.3及以上版本(建议选择2.6或2.7,适配多数主流Redmine版本)是最彻底的解决办法:
- 借助rbenv或rvm这类Ruby版本管理工具,安装目标Ruby版本
- 切换到新Ruby版本后,执行
bundle install重新安装所有依赖 - 再次尝试运行邮件接收的rake命令
2. 修改Gemfile语法并降级Bundler(临时应急方案)
如果暂时无法升级Ruby,可以通过修改语法适配Ruby 1.8.7:
- 打开Redmine根目录下的
Gemfile,找到第31行:
将其修改为Ruby 1.8.7支持的老式哈希写法:gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin]gem 'tzinfo-data', :platforms => [:mingw, :x64_mingw, :mswin] - 降级Bundler到兼容Ruby 1.8.7的版本(比如1.10.x系列):
gem uninstall bundler gem install bundler -v 1.10.6 - 重新执行
bundle install安装依赖,之后再尝试运行你的rake命令。
额外提醒
Ruby 1.8.7已经停止维护多年,存在大量未修复的安全漏洞,且绝大多数现代Ruby库都不再支持它。即便临时解决了当前问题,后续大概率还会遇到其他兼容性故障,所以强烈建议尽早完成Ruby版本的升级。
内容的提问来源于stack exchange,提问作者iamsumesh
相关产品推荐
相关产品推荐

