Docker的Rails控制台问题

问题描述

我已经使用DockerCompose使用pgsql数据库创建了Rails应用程序。 似乎工作正常,但在运行应用程序时使用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)

无论输入什么,都会出现此错误

我尝试在我的gemfile中注释“ gem'spring-watcher-listen','〜> 2.0.0'”,但是现在当我尝试生成模型时,控制台永远挂起

有人知道如何解决此问题吗?

谢谢

解决方法

generate是与Rails捆绑在一起的Rake任务。您可以像这样在容器中运行它

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

但是,除非将容器文件系统配置为与本地进行双向同步,否则生成的文件很可能不会出现在本地计算机上。