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

Posted

技术标签:

【中文标题】Ruby on Rails 上“...的预期字符串默认值”的含义【英文标题】:Meaning of "Expected string default value for ..." on Ruby on Rails 【发布时间】:2017-04-20 14:15:15 【问题描述】:

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

$ rails _5.0.0.1_ new myapp --database=postgresql -T

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

$ rails db:migrate

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

$ 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

这些关于“Expected string default value for ...”的消息是什么意思

提前致谢。

更新:我的 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

【问题讨论】:

我在运行 ruby​​ 2.3.1 和 rails 5.0.0.1 时遇到类似的行为 rails generate model with all set as default: Running via Spring preloader in process 11594 Expected string default value for '--jbuilder' ;得到了真实(布尔) 我认为这些消息很可能是由 Rails 5.0.0.1 引起的 我改用 Ruby 2.2.5 并且不再遇到这些问题了 github for Thor 上的 changelog notes 可能对你有用,Njoy! 【参考方案1】:

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

降级到 0.19.3 并没有解决这个问题。 0.19.2 引发了其他错误。降级到 0.19.1 终于解决了。

所以将它添加到您的 Gemfile 中:

gem 'thor', '0.19.1'

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

【讨论】:

我不使用那个 gem,但是 gems 的版本可能是解决为什么这些消息的提示。 我认为大多数人不直接使用它 - 但请检查您的 Gemfile.lock,您可能会隐式使用它。 你是对的,那些消息不再显示了。但是我最初的问题还没有得到回应:这些消息的含义是什么?它们是错误、警告还是不应显示的简单文本? 它们是警告,但我不会忽略它们。它们表明rails g model 命令的这些选项的默认值被错误地覆盖,这可能会产生奇怪的后果。您可以通过运行rails g model --help 查看实际默认值。

以上是关于Ruby on Rails 上“...的预期字符串默认值”的含义的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails全栈课程5.2 项目上线--在云服务器上配置Ruby On Rails环境

Mac上配置 Ruby on Rails和Git

Ruby on Rails - 在 OSX 上使用 Ruby 2.4.4 而不是 rails 5.1.6 的配置问题/异常

在 Ruby on Rails 上使用 javascript 注入 ruby

Ruby on Rails 在现有资源上返回 404

分析 ruby​​ / ruby​​ on rails 应用程序