我正在开始一个新项目,现在已经做了很多次了。然而,这是我第一次遇到这个问题!
我正常创建了应用程序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 install
和bundle 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 gem
gem '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目录中。
我希望能帮上忙