Запустите `rails c` на GCloud instace с помощью appengine gem - PullRequest
0 голосов
/ 03 июня 2019

У меня есть приложение Rails 6.0.0.rc1 (с установкой appengine gem), которое я развернул в GCP.Есть ли способ войти в удаленную консоль rails на экземпляре, который запускает приложение?Я пробовал это:

bundle exec rake appengine:exec -- bundle exec rails c

, который дает следующий вывод:

...
---------- EXECUTE COMMAND ----------
bundle exec rails c
Loading production environment (Rails 6.0.0.rc1)
Switch to inspect mode.
...

, поэтому, очевидно, он выполнил команду, но сразу после этого закрывает соединение.

Есть липростой способ сделать это?

Для справки: На Heroku это будет просто:

heroku run rails c --app my-application

1 Ответ

0 голосов
/ 03 июня 2019

Есть несколько шагов:

https://gist.github.com/kyptin/e5da270a54abafac2fbfcd9b52cafb61

Если вы используете приложение Rails в гибкой среде Google App Engine, потребуется немного настроек, чтобы добраться до консоли rails, подключенной к вашей развернутой среде. Я хотел задокументировать шаги для моей собственной справки, а также для помощи другим.

Откройте раздел Google App Engine -> экземпляры консоли Google Cloud Platform (GCP).

Выберите раскрывающийся список «SSH» для работающего экземпляра. (Какой экземпляр? Оба моих экземпляра находятся в одном кластере, и оба работают на Rails, поэтому для меня это не имело значения. YMMV.) У вас есть выбор, как подключиться через ssh.

Выберите «Открыть в окне браузера», чтобы открыть веб-сеанс SSH, что удобно, но потенциально неудобно.

Выберите «Просмотр команды gcloud», чтобы просмотреть и скопировать команду gcloud, которую вы можете использовать из терминала, что позволяет использовать ваше любимое приложение терминала, но может потребовать дополнительных шагов по установке команды gcloud и аутентификации команды gcloud с помощью GCP. .

Когда вы находитесь в выбранном вами 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" focus_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 для запуска консоли Rails в рабочей среде Rails.

...