Проблема консоли Rails с Docker compose

#ruby-on-rails #docker #docker-compose #rails-console

#ruby-on-rails #docker #docker-compose #рельсы-консоль

Вопрос:

Я создал приложение rails с базой данных pgsql, используя DockerCompose. Кажется, все работает нормально, но у меня проблемы с использованием консоли rails во время запуска приложения. Что я делаю, так это :

  • docker-compose up . Приложение начинает работать.
  • Затем я запускаю: docker exec -it ID_OF_RAILS_CONTAINER bin/rails console , или «docker-compose run CONTAINER_NAME rails console» (я пробовал оба)

Консоль открывается с этим :

 Creating transcendance_backend_run ... done
Running via Spring preloader in process 21
Loading development environment (Rails 6.0.3.4)
irb(main):001:0>
  

Затем, когда я пытаюсь создать модель, я получаю следующую ошибку:

 irb(main):001:0> rails g model user name guild_id banned
Traceback (most recent call last):
        1: from (irb):1
NameError (undefined local variable or method `banned' for main:Object)
  

Что бы я ни вводил, я получаю эту ошибку.

Я попытался прокомментировать «gem ‘spring-watcher-listen’, ‘~> 2.0.0’» в моем gemfile, но теперь консоль просто зависает навсегда, когда я пытаюсь сгенерировать модель.

Кто-нибудь знает, как это исправить?

Спасибо

Комментарии:

1. Я думаю rails generate , что это команда оболочки, а не вызов метода Ruby. Я бы запустил это в вашем локальном дереве исходных текстов, вне Docker и вне irb интерпретатора; затем перестройте ваш образ с помощью обновленного кода модели.

Ответ №1:

generate это задача Rake, связанная с Rails. Вы можете запустить его в контейнере следующим образом

 docker exec -it ID_OF_RAILS_CONTAINER bin/rails model user name guild_id banned
  

Однако, если файловая система контейнера не настроена на двустороннюю синхронизацию с вашей локальной, вполне вероятно, что сгенерированные файлы не будут отображаться на вашем локальном компьютере.