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

在Ruby Gemfile中通过GitHub指定引用拉取mimemagic v0.3.0遇阻求助

解决mimemagic v0.3.0撤回导致的Docker部署问题

先明确你试过的三种写法的问题:

  • 第一种用github:简写的写法,因为GitHub早已禁用非HTTPS的git协议访问,早期Bundler的这个简写默认走未加密协议,所以会出现传输错误和超时。
  • 第二种SSH协议写法,需要在Docker容器里配置GitHub SSH密钥才能验证通过,新手操作麻烦,不推荐。
  • 第三种HTTPS协议的写法本身是正确的,后续报错是因为Docker构建时没正确完成bundle install步骤,导致Git源的gem没被拉取安装。

正确操作步骤

  1. 修改Gemfile
    替换原有的gem 'mimemagic', '0.3.0'为以下内容:

    gem 'mimemagic', git: 'https://github.com/mimemagicrb/mimemagic.git', ref: 'a4b038c6c1b9d76dac33d5711d28aaa9b4c42c66'
    
  2. 调整Docker构建流程
    确保Dockerfile里包含完整的bundle安装逻辑,示例如下(替换成项目对应的Ruby版本):

    FROM ruby:2.7.4
    WORKDIR /app
    
    # 安装系统依赖(根据项目需求调整,比如需要编译依赖的话要装build-essential)
    RUN apt-get update && apt-get install -y --no-install-recommends build-essential
    
    # 先复制Gemfile和Gemfile.lock,利用Docker缓存
    COPY Gemfile Gemfile.lock ./
    # 执行bundle install,拉取所有依赖包括Git源的mimemagic
    RUN bundle install --jobs 4 --retry 3
    
    # 复制项目代码
    COPY . .
    
    # 启动应用的命令,比如Rails服务器
    CMD ["rails", "server", "-b", "0.0.0.0"]
    
  3. 重新构建镜像
    清理之前的构建缓存,重新构建:

    docker build --no-cache -t your-app-image .
    
  4. 额外排查点

    • 如果本地能运行项目,先在本地执行bundle install,更新Gemfile.lock后再复制到容器中,避免容器内依赖解析出错。
    • 若仍有问题,在bundle install后加--verbose参数查看详细日志,定位具体拉取失败的原因。

内容的提问来源于stack exchange,提问作者Ray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:20:22