Ruby on rails 为RubyonRails6创建弹性beanstalk环境时遇到问题(rvm、rbenv、.Ruby版本问题)

Ruby on rails 为RubyonRails6创建弹性beanstalk环境时遇到问题(rvm、rbenv、.Ruby版本问题),ruby-on-rails,ruby,amazon-elastic-beanstalk,rvm,rbenv,Ruby On Rails,Ruby,Amazon Elastic Beanstalk,Rvm,Rbenv,我一直在想如何在macOS上使用cli将一个简单的rails应用程序部署到elastic beanstalk,但每次我进入eb create时,都会出现以下错误: 2020/08/06 07:22:56.626563 [INFO] Executing instruction: StageApplication 2020/08/06 07:22:56.626674 [INFO] extracting /opt/elasticbeanstalk/deployment/app_source_bundl

我一直在想如何在macOS上使用cli将一个简单的rails应用程序部署到elastic beanstalk,但每次我进入
eb create
时,都会出现以下错误:

2020/08/06 07:22:56.626563 [INFO] Executing instruction: StageApplication
2020/08/06 07:22:56.626674 [INFO] extracting /opt/elasticbeanstalk/deployment/app_source_bundle to /var/app/staging/
2020/08/06 07:22:56.626695 [INFO] Running command /bin/sh -c /usr/bin/unzip -q -o /opt/elasticbeanstalk/deployment/app_source_bundle -d /var/app/staging/
2020/08/06 07:22:56.638657 [INFO] finished extracting /opt/elasticbeanstalk/deployment/app_source_bundle to /var/app/staging/ successfully
2020/08/06 07:22:56.640331 [INFO] Executing instruction: RunAppDeployPreBuildHooks
2020/08/06 07:22:56.640351 [INFO] The dir .platform/hooks/prebuild/ does not exist in the application. Skipping this step...
2020/08/06 07:22:56.640356 [INFO] Executing instruction: stage ruby application
2020/08/06 07:22:56.640360 [INFO] stage ruby application ....
2020/08/06 07:22:56.640386 [INFO] Running command /bin/sh -c bundle config set --local deployment true
2020/08/06 07:22:56.669550 [ERROR] An error occurred during execution of command [app-deploy] - [stage ruby application]. Stop running the command. Error: install dependencies in Gemfile failed with error Command /bin/sh -c bundle config set --local deployment true failed with error exit status 1. Stderr:rbenv: version `ruby-2.7.0' is not installed (set by /var/app/staging/.ruby-version)
然后我运行
eb terminate
,这样我就不会因为任何事情而收费。错误只是说我没有安装2.7.0,即使我的Gemfile列出了2.7.1,并且我运行了
bundle install
,没有任何问题

对于eb平台版本,我选择了第一个选项,那就是Ruby 2.7.1-p83,这是我的
Ruby-v
当前返回的结果,所以我不确定它为什么要寻找2.7.0

我使用rvm是为了更新到最新的Ruby,之前我有Ruby 2.6.3,底部的错误是“Ruby-2.6.3”未安装“。在我的mac上使用rbenv更新到最新版本的Ruby很困难,我想是因为它与我的Ruby系统版本有问题?因此,我从brew中删除了rbenv,并开始使用rvm。但我觉得这就是问题所在,因为elastic beanstalk似乎正在使用rbenv来尝试找到正确版本的Ruby?
Stderr:rbenv:version'ruby-2.7.0'未安装

任何帮助或指导都将不胜感激,即使只是了解“.ruby version”是什么或不应使用rvm进行部署。

“.ruby version”是保存在项目根目录下的文件,它指示您正在使用的ruby版本,因此它会自动读取版本。(如果你是这么问的)

对于您的问题,您必须确保正确应用ruby版本

  • 检查EC2实例中安装的ruby版本
  • 您可以通过ssh
    eb-ssh
    然后
    ruby-v
    结果将是您需要使用的ruby版本。(更倾向于直接在EC2实例上进行检查,如果通过EB进行检查,可能会有所不同)

  • 确保您的
    .gemfile
    .ruby版本
    文件声明了正确的版本
  • 如果您还没有
    .ruby版本
    文件,请使用步骤1中获得的版本创建一个

    我处理的是同一个问题,安装在EC2实例中的ruby版本与我执行
    eb health--refresh
    时返回的版本不同,因此我按照上面的步骤进行了操作,然后重新构建了我的环境,它起了作用,因此您可能还需要重新构建您的环境