如何在Amazon Linux 2023 Elastic Beanstalk(Ruby 3.2运行环境)中启动Rails控制台
如何在Amazon Linux 2023 Elastic Beanstalk(Ruby 3.2运行环境)中启动Rails控制台
我来帮你梳理下这个问题的解决步骤,毕竟AL2023和之前的AL2在Ruby环境配置上确实有不少变化,之前依赖rbenv的方式已经不适用了,咱们一步步来:
第一步:进入应用部署目录
通过SSM连接到你的EC2实例后,先切换到Elastic Beanstalk默认的Rails应用根目录:
cd /var/app/current
第二步:切换到正确的运行用户
Elastic Beanstalk在AL2023上是用webapp用户来运行Ruby应用的,而且数据库连接这类关键环境变量都是配置给这个用户的。直接用root操作会丢失这些变量,还会有gem权限问题,所以先切换过去:
sudo su - webapp
这里的-很重要,它会加载webapp用户的完整环境配置,不然还是拿不到数据库的连接信息。
第三步:重新安装Gem依赖(解决缺失问题)
你之前用root执行bundle install,安装的Gem会存放在root用户的目录下,webapp用户访问不到,所以才会出现找不到Gem的报错。切换到webapp用户后,重新安装依赖:
bundle install --path vendor/bundle
指定--path vendor/bundle是把Gem安装到应用目录下,既避免权限问题,也符合EB的部署规范。
第四步:启动Rails控制台
现在就可以正常启动控制台了:
bundle exec rails console
如果是生产环境,建议明确指定环境参数:
bundle exec rails console production
补充说明
- 为什么不用rbenv了?AL2023的EB Ruby环境已经把Ruby和Bundle直接集成到系统路径里,不需要再依赖rbenv的shims目录,直接用系统的
bundle命令就行。 - 数据库连接问题:之前root用户运行时连不上数据库,就是因为没加载EB注入的
DATABASE_URL等环境变量,切换到webapp用户后这些变量会自动加载,就能正常连接了。
备注:内容来源于stack exchange,提问作者rigyt
相关产品推荐
相关产品推荐

