【问题标题】:Rails console issue with Docker composeDocker compose 的 Rails 控制台问题
【发布时间】:2021-02-13 19:28:38
【问题描述】:

我使用 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'”,但现在当我尝试生成模型时控制台永远挂起.

有谁知道如何解决这个问题?

谢谢

【问题讨论】:

  • 我认为rails generate 是一个shell 命令,而不是Ruby 方法调用。我会在你的本地源代码树中、Docker 之外和irb 解释器之外运行它;然后使用更新的模型代码重建您的图像。

标签: ruby-on-rails docker docker-compose rails-console


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    相关资源
    最近更新 更多