我正在开始一个新项目,现在已经做了很多次。但是,这是我第一次遇到这个问题!
我正常创建应用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
没有运气。我也尝试过设置this post
我正在使用Rails 5.0.0.1和Ruby 2.3.1。我注意到这只是刚开始发生,因为我对macOS进行了更新到10.12.1我不确定它们是否相关。
所以我开始测试这个。我创建了几个不同的项目'rails new testapppg'和'rails new testapp-pg'。
在两个应用程序中,我更改了thor gem gem 'thor', '0.19.1'
。然后我继续运行bundle update,并创建数据库。现在,这两个项目都在运行rails g model sample
酷!这就是修复。所以我回去重新创建了我的pxl-insight应用程序,更新了thor gem,创建了数据库。现在,当我去创建模型时,我又得到了错误!?
所以我的下一个问题是Rails缓存项目名称吗?这就是新项目工作正常的原因,但是之前使用的名称会导致错误?
答案 0 :(得分:7)
昨天我收到了这个错误。我还通过降级Thor宝石来修复。 gem 'thor', '0.19.1'
当我想再次使用相同的名称或模型在命令行中生成我的应用程序时,它会挂起很长一段时间并且什么也没发生。我尝试关闭并重新打开终端(其他人声称这对他们有效,所以它可能是另一种解决方案)但它并不适合我。
我通过删除项目中的/bin
目录来修复它并运行:bundle install --binstubs
,它将再次重新生成bin目录。可能是前一个项目的一些路径,位于bin目录中。
我希望它有所帮助
答案 1 :(得分:4)
尝试将Thor明确设置为您想要的版本。
在我的Gemfile中,我将版本设置为0.19.1并且我还拒绝我知道不好的版本,以防队友编辑文件,或者如果队友运行捆绑更新则保护应用程序。
示例:
for