我正在开始一个新项目,现在已经做了很多次了。然而,这是我第一次遇到这个问题!
我正常创建了应用程序rails new myapp -d postgresql
我使用rails db:create创建了数据库并运行了站点rails s。一切正常,我看到了rails欢迎/等待页面。
现在我开始创建我的模型,例如rails g model user。我明白了!

Expected string default value for `--jbuilder`; got true (boolean)
      invoke  active_record

The name 'User' is either already used in your application or reserved by Ruby on
Rails. Please choose an alternative and run this generator again.

好吧,这很公平,我理解错误信息。所以我想我会尝试创建一个不同的模型。当我运行rails g model testing时,我得到…
Running via Spring preloader in process 31815
Expected string default value for '--jbuilder'; got true (boolean)
      invoke  active_record
      create    db/migrate/20161217171019_create_testings.rb
      create    app/models/testing.rb
      invoke    test_unit
      create      test/models/testing_test.rb
      create      test/fixtures/testings.yml

有没有其他人有这个问题,如果有,有什么想法为什么?我试过不走运地跑bundle installbundle update。我也试过设置Thor版本,如this post
我使用的是rails 5.0.0.1和ruby 2.3.1。我注意到自从我把MacOS升级到10.12.1之后,这才刚刚开始,我不确定它们是否相关。
更新
所以我开始测试这个。我创建了两个不同的项目‘rails new testapp pg’和‘rails new testapp pg’。
在这两个应用程序中,我都更改了thor gemgem 'thor', '0.19.1'。然后我继续运行bundle update,并创建db。现在这两个项目都在运行rails g model sample时创建了测试模型。
酷!所以这就是解决办法。所以我回去重新创建了我的pxl insight应用程序,更新了thor gem,创建了db。现在,当我去创建模型时,我又得到了错误!?
所以我的下一个问题是rails是否缓存项目名称?这就是为什么新项目运行良好,但使用以前使用的名称会导致错误的原因?

最佳答案

我昨天犯了这个错误。我还修正了降级托尔宝石。gem 'thor', '0.19.1'当我想用相同的名称或命令行中的模型重新生成我的应用程序时,它挂了很长一段时间,什么也没有发生。我试着关闭并重新打开终端(其他人声称这对他们有效,所以这可能是另一种解决方案),但对我不起作用。
我通过删除我的项目中的/bin目录修复了这个问题,并运行:bundle install --binstubs重新生成bin目录。可能前一个项目的一些路径在bin目录中。
我希望能帮上忙

10-07 19:10
查看更多