Ruby on Rails上"预期字符串默认值为..."的含义

Ουι*_*ευα 22 ruby-on-rails rails-migrations

最近我在Rails(5.0.0.1)上为Ruby(2.3.3)创建了一个应用程序:

$ rails _5.0.0.1_ new myapp --database=postgresql -T
Run Code Online (Sandbox Code Playgroud)

设置Gemfile并测试与我的数据库的连接后:

$ rails db:migrate
Run Code Online (Sandbox Code Playgroud)

我试图生成模型,但我收到了奇怪的消息:

$ rails g model Competition title:string
Expected string default value for '--test-framework'; got false (boolean)
Expected string default value for '--jbuilder'; got true (boolean)
Expected string default value for '--test-framework'; got false (boolean)
      invoke  active_record
      create    db/migrate/20161206021603_create_competitions.rb
      create    app/models/competition.rb
Run Code Online (Sandbox Code Playgroud)

这些消息的含义是什么?"预期的字符串默认值为......"

提前致谢.

更新:我的Gemfile

source 'https://rubygems.org'

ruby '2.3.3'

gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
gem 'pg', '~> 0.18'
gem 'puma', '~> 3.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'

gem 'jquery-turbolinks'
gem 'groupdate'
gem 'hightop'
gem 'countries'
gem 'faker'
gem 'haml'
gem 'haml-rails'

group :development, :test do
    gem 'byebug', platform: :mri
    gem 'better_errors'
    gem 'binding_of_caller'
    gem 'pry-byebug'
    gem 'awesome_print'
    gem 'irbtools-more', require: 'irbtools/binding'
    gem 'listen'
end
Run Code Online (Sandbox Code Playgroud)

Thi*_*ilo 50

当我执行一个时,Rails 5.0.0.1和ruby 2.2.0发生了这种情况bundle update.它与Rails或Ruby无关,而是由于来自0.19.1到0.19.4 的thor gem(这是jquery-rails的依赖)的升级而引起的.

降级至0.19.3并没有解决问题.0.19.2抛出其他错误.降级到0.19.1最终修正了它.

所以将它添加到您的Gemfile:

gem 'thor', '0.19.1'
Run Code Online (Sandbox Code Playgroud)

并且运行bundle update thor应该摆脱这个,直到Thor维护者可以解决这个问题.(更新:Github问题)

  • 大多数人不直接使用它,我假设 - 但检查你的`Gemfile.lock`,你可能会隐式使用它. (4认同)
  • 它们是警告,但我不会忽视它们。它们表明“rails g model”命令的这些选项的默认值被错误地覆盖,这可能会产生奇怪的后果。您可以通过运行 `rails g model --help` 来查看*实际*默认值应该是什么。 (2认同)