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

Mac下使用serverless-ruby-package部署Ruby应用崩溃如何解决?

问题排查解决步骤
  • 根因定位:报错TypeError: Cannot read property 'push' of undefined来源于serverless-ruby-package插件的逻辑缺陷,插件会默认往serverless.yml的package.include配置项追加路径,当你没有显式配置该字段时,变量为undefined,调用push方法就会触发该报错。

1. 补全serverless.yml的package配置

在你的serverless.yml中添加如下配置,至少显式声明include为空数组:

package:
  include: []
  # 可根据业务需要补充需要打包的文件路径
  exclude:
    - node_modules/**
    - .git/**
    - .DS_Store

修改完成后重新执行sls package或sls deploy即可解决该类型错误。

2. 解决原生gem跨架构编译问题(规避最初的curb加载报错)

你最开始遇到的cannot load such file -- curb报错是因为Mac本地编译的原生gem(尤其是curb这类依赖系统库的gem)和AWS Lambda的运行环境不兼容,可通过插件配置启用Docker编译解决:

custom:
  rubyPackage:
    useDocker: true
    # 替换为你实际使用的Ruby版本对应的Lambda构建镜像
    dockerImage: lambci/lambda:build-ruby2.7

执行打包前确保本地Docker Desktop已启动,插件会自动在Docker容器中安装编译gems,保证和Lambda运行环境兼容。

3. 版本兼容性检查

serverless-ruby-package插件已停止维护多年,仅兼容Serverless v2及更早版本,如果你当前使用的是Serverless v3/v4版本,可降级Serverless版本解决兼容问题:

npm install -g serverless@2.72.3

4. 临时替代方案

如果插件仍然无法正常工作,可手动执行Docker命令完成gem安装后再部署:

# 替换为你实际使用的Ruby版本
docker run --rm -v "$PWD":/var/task lambci/lambda:build-ruby2.7 bundle install --deployment
sls deploy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 22:27:04