我正在尝试将仅限API的Rails 5应用程序部署到具有标准Ruby运行时的AppEngine Flex,最后出现以下错误:
Updating service [default] (this may take several minutes)...failed.
ERROR: (gcloud.app.deploy) Error Response: [9]
Application startup error:
/usr/bin/env: 'ruby2.5': No such file or directory
我在 Gemfile 中指定了 ruby '2.5.1',并且我也在设置为 2.5.1 的项目根目录中添加了一个显式.ruby-version
文件。
我在日志中没有其他可用的调试信息,没有其他幻想。我的入口点命令是:
bundle exec rails server Puma -p $PORT
如果需要,我可以提供更多细节,不确定还有什么可能相关。有什么指示吗?据我所知,我这边没有任何人要求一个专门在执行时使用的 ruby 版本。
谢谢!
编辑:这是我的app.yaml文件
entrypoint: bundle exec rails server Puma -p $PORT
env: flex
runtime: ruby
更新:
我可以验证我在尝试执行 db:migrate 等 rake 任务时是否遇到了类似的问题:
--------- EXECUTE COMMAND ----------
bundle exec rake db:migrate
/usr/bin/env: 'ruby2.5': No such file or directory
ERROR
ERROR: build step 0 "gcr.io/google-appengine/exec-wrapper:latest" failed: exit status 127
--------------------------------------------------------------------------------------------------------------------------------------------------------
好的,我现在看到在本地调试 docker 映像后发生了什么。因为我使用的是 ubuntu 并使用系统红宝石来安装 gem,所以它/usr/bin/env ruby2.5
嵌入到捆绑到我的应用程序中的每个可执行脚本中。我删除了所有 gem 并切换到 rbenv 来管理 Ruby 版本,这减轻了 unbuntu 的 ruby 和我的应用程序之间的这种奇怪行为。