【问题标题】:AppEngine Flexible Ruby environment, application startup error: /usr/bin/env: 'ruby2.5': No such file or directoryAppEngine Flexible Ruby 环境,应用启动报错:/usr/bin/env: 'ruby2.5': No such file or directory
【发布时间】:2018-06-26 05:17:20
【问题描述】:

我正在尝试使用标准 Ruby 运行时将仅 API 的 Rails 5 应用程序部署到 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' 并且我已经将一个显式的 .ruby-version 文件添加到我的项目的根目录中并设置为 2.5.1。

我在日志中没有其他可用的调试信息,也没有其他幻想。我的入口点命令是:

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
--------------------------------------------------------------------------------------------------------------------------------------------------------

【问题讨论】:

  • 当您说 ...w/ 标准 Ruby 运行时... 时,您是什么意思?你能从这个tutorial开始看看它是否有效吗?
  • 您好,这正是我所做的并且在另一边遇到了这个问题。将我的 app.yaml 添加到问题中。
  • 在 app.yaml 中也有这样的部分:env_variables: SECRET_KEY_BASE: some-generated-key 我认为如果你按照this link 中的教程进行操作会更好。我看到一个 app.yaml 与您在 cloud.google.com/appengine/docs/flexible/ruby/runtime 中显示的类似,但这只是运行时的概述。
  • 嗨,维克多,我也有那个部分,但出于明显的原因,我把它省略了。如前所述,我按照您链接的教程进行操作,这是运行 gcloud app deploy 的结果。
  • FWIW rackup 确实有效,puma 的变化没有,抱歉我意识到我没有提到这一点。我的错。我在机架系统中看到了这一点,但不确定这对于实际的 rails 项目来说是不是最好的主意。

标签: ruby-on-rails ruby google-app-engine app-engine-flexible


【解决方案1】:

好的,我现在看到在本地调试 docker 映像后发生了什么。因为我在 ubuntu 上并且使用系统 ruby​​ 来安装 gem,所以它已将 /usr/bin/env ruby2.5 嵌入到捆绑到我的应用程序中的每个可执行脚本中。我删除了所有 gem 并切换到 rbenv 来管理 Ruby 版本,这减轻了 unbuntu 的 ruby​​ 和我的应用程序之间的这种奇怪行为。

【讨论】:

  • 我认为您可以接受自己的答案,社区会知道此案已解决。
  • 你知道系统是如何拉取ruby2.5的吗?我在 docker 图像上遇到了同样的问题,which ruby 返回就好了。不确定字符串 ruby2.5 来自哪里。
  • 看起来which ruby 符号链接到ruby2.5 文件gist.github.com/schneems/c62fc2359983b57d3e27166ed23432f6
猜你喜欢
  • 2015-10-07
  • 2014-01-20
  • 2014-12-02
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 2018-12-23
  • 2014-11-06
相关资源
最近更新 更多