如果您在 Google App Engine 的灵活环境中运行 Rails 应用程序,则需要进行一些设置才能访问连接到已部署环境的 Rails 控制台。我想记录这些步骤以供我自己参考,也可以作为对其他人的帮助。
打开 Google App Engine -> Google Cloud Platform (GCP) 控制台的实例部分。
为正在运行的实例选择“SSH”下拉菜单。 (哪个实例?我的两个实例都在同一个集群中,并且都运行 Rails,所以对我来说没关系。YMMV。)您可以选择如何通过 ssh 连接。
选择“在浏览器窗口中打开”以打开基于 Web 的 SSH 会话,这很方便,但可能会很尴尬。
选择“查看 gcloud 命令”以查看和复制可以从终端使用的 gcloud 命令,这样您就可以使用自己喜欢的终端应用程序,但可能需要安装 gcloud 命令和使用 GCP 验证 gcloud 命令的额外步骤.
当您处于您选择的 SSH 会话中时,运行 sudo docker ps 以查看当前正在运行的 docker 容器。
标识您的应用的容器。这是我的输出的样子(为了便于阅读而缩写)。我的应用的容器是第一个。
jeff@aef-default-425eaf...hvj:~$ sudo docker ps
容器 ID 图像命令名称
38e......552 us.gcr.io/my-project/appengine/default... "/bin/sh -c 'exec bun" gaeapp
8c0......0ab gcr.io/google_appengine/cloud-sql-proxy“/cloud_sql_proxy -di”focused_lalande
855......f92 gcr.io/google_appengine/api-proxy "/proxy" api
7ce......0ce gcr.io/google_appengine/nginx-proxy "/var/lib/nginx/bin/s" nginx_proxy
25f......bb8 gcr.io/google_appengine/fluentd-logger "/opt/google-fluentd/" fluentd_logger
记下您的应用程序的容器名称(在我的例子中是 gaeapp),然后运行 container_exec bash。
将 ruby 和节点添加到您的环境中:export PATH=$PATH:/rbenv/versions/2.3.4/bin:/rbenv/bin:/nodejs/bin
cd /app 以获取您的应用程序代码。
将 Rails 应用程序期望的任何必要的环境变量添加到您的环境中。例如:export DATABASE_URL='...'
如果不知道自己的应用需要什么,可以通过 cat app.yaml 查看应用的完整环境。
bin/rails console production 在 Rails 生产环境中启动 Rails 控制台。