Gemfile.lock存在时如何为apt安装的Zammad添加自定义Ruby gem
apt安装Zammad添加自定义gem启动报错解决方案
核心原因:apt部署的Zammad默认开启Bundler部署模式,要求Gemfile、Gemfile.local与Gemfile.lock完全匹配,新增gem后未同步更新锁文件会触发校验失败,执行单次bundle install --no-deployment没有修改持久化配置,所以重启后会反复报错。
解决步骤:
- 切换到Zammad专属运行用户并进入安装目录,禁止使用root执行后续bundle相关操作,避免权限异常:
su - zammad cd /opt/zammad
- 先清除持久化保存的部署模式配置:
bundle config unset deployment
- 执行依赖安装,命令会自动读取Gemfile.local中的自定义依赖,同步更新Gemfile.lock:
bundle install
- 依赖安装完成后重新开启部署模式,符合生产环境运行安全要求:
bundle config set deployment true
- 退回root用户重启所有Zammad服务生效:
systemctl restart zammad zammad-web zammad-worker zammad-websocket
注意:Zammad版本升级会覆盖官方提供的Gemfile与Gemfile.lock,每次升级完成后需要重新执行上述步骤,重新安装自定义gem。
内容的提问来源于stack exchange,提问作者Rouven Matthies
相关产品推荐
相关产品推荐

