Проблема консоли Rails с компоновкой Docker

Я создал приложение 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, но теперь консоль навсегда зависает, когда я пытаюсь сгенерировать модель.

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

Спасибо


person Hélène Brulin    schedule 31.10.2020    source источник
comment
Я думаю, что rails generate - это команда оболочки, а не вызов метода Ruby. Я бы запустил это в вашем локальном дереве исходных текстов, вне Docker и вне интерпретатора irb; затем перестройте свой образ с обновленным кодом модели.   -  person David Maze    schedule 31.10.2020


Ответы (1)


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

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

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

person TheGeorgeous    schedule 02.11.2020