#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
Однако, если файловая система контейнера не настроена на двустороннюю синхронизацию с вашей локальной, вполне вероятно, что сгенерированные файлы не будут отображаться на вашем локальном компьютере.