错误“’Validate_default_type!’:在Windows上运行Ruby on Rails时,选项的默认值必须与其类型(ArgumentError)匹配”

我正在学习本教程并刚刚开始。 我已经使用gem install rails安装了Ruby on Rails,并使用rails new blog创建了一个rails new blog

该教程现在说我需要运行rails generate controller Welcome index ,但是当我这样做时,我收到此错误:

 C:/Ruby22/lib/ruby/gems/2.2.0/gems/thor-0.19.2/lib/thor/parser/option.rb:130:in `validate_default_type!': An option's default must match its type. (ArgumentError) from C:/Ruby22/lib/ruby/gems/2.2.0/gems/thor-0.19.2/lib/thor/parser/option.rb:113:in `validate!' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/thor-0.19.2/lib/thor/parser/argument.rb:24:in `initialize' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/thor-0.19.2/lib/thor/parser/option.rb:9:in `initialize' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/thor-0.19.2/lib/thor/base.rb:544:in `new' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/thor-0.19.2/lib/thor/base.rb:544:in `build_option' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/thor-0.19.2/lib/thor/base.rb:278:in `class_option' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/generators/base.rb:202:in `class_option' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/generators/base.rb:178:in `block in hook_for' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/generators/base.rb:168:in `each' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/generators/base.rb:168:in `hook_for' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/jbuilder-2.6.0/lib/generators/rails/scaffold_controller_generator.rb:9:in `' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/jbuilder-2.6.0/lib/generators/rails/scaffold_controller_generator.rb:6:in `' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/jbuilder-2.6.0/lib/generators/rails/scaffold_controller_generator.rb:5:in `' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/jbuilder-2.6.0/lib/generators/rails/scaffold_controller_generator.rb:4:in `' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `block in require' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/jbuilder-2.6.0/lib/jbuilder/railtie.rb:32:in `block in ' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/railtie.rb:230:in `call' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/railtie.rb:230:in `block in run_generators_blocks' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/railtie.rb:247:in `each' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/railtie.rb:247:in `each_registered_block' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/railtie.rb:230:in `run_generators_blocks' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/application.rb:453:in `block in run_generators_blocks' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/engine/railties.rb:13:in `each' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/engine/railties.rb:13:in `each' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/application.rb:453:in `run_generators_blocks' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/engine.rb:465:in `load_generators' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:144:in `generate_or_destroy' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:60:in `generate' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in `' from bin/rails:4:in `require' from bin/rails:4:in `' 

我在Stack Overflow上发现了一个类似的问题,在这里问同样的问题,但是当被要求显示他的gem list时,海报从未回复过。 所以这是我的:

 actioncable (5.0.0.1) actionmailer (5.0.0.1) actionpack (5.0.0.1) actionview (5.0.0.1) activejob (5.0.0.1) activemodel (5.0.0.1) activerecord (5.0.0.1) activesupport (5.0.0.1) arel (7.1.4) bigdecimal (1.2.7, default: 1.2.6) builder (3.2.2) bundler (1.13.6) coffee-rails (4.2.1) coffee-script (2.4.1) coffee-script-source (1.11.1) concurrent-ruby (1.0.2) debug_inspector (0.0.2) erubis (2.7.0) execjs (2.7.0) globalid (0.3.7) i18n (0.7.0) io-console (0.4.6, default: 0.4.3) jbuilder (2.6.0) jquery-rails (4.2.1) json (2.0.2, default: 1.8.1) loofah (2.0.3) mail (2.6.4) method_source (0.8.2) mime-types (3.1) mime-types-data (3.2016.0521) mini_portile2 (2.1.0) minitest (5.9.1, 5.4.3) multi_json (1.12.1) nio4r (1.2.1) nokogiri (1.6.8.1 x86-mingw32) power_assert (0.3.1, 0.2.2) psych (2.2.0, default: 2.0.8) puma (3.6.2) rack (2.0.1, 1.6.4) rack-protection (1.5.3) rack-test (0.6.3) rails (5.0.0.1) rails-dom-testing (2.0.1) rails-html-sanitizer (1.0.3) railties (5.0.0.1) rake (11.3.0, default: 10.4.2) rdoc (5.0.0, default: 4.2.0) sass (3.4.22) sass-rails (5.0.6) sinatra (1.4.7) sprockets (3.7.0) sprockets-rails (3.2.0) sqlite3 (1.3.12 x86-mingw32) test-unit (3.2.3, 3.0.8) thor (0.19.2, 0.19.1) thread_safe (0.3.5) tilt (2.0.5) turbolinks (5.0.1) turbolinks-source (5.0.0) tzinfo (1.2.2) tzinfo-data (1.2016.10) uglifier (3.0.3) web-console (3.4.0) websocket-driver (0.6.4) websocket-extensions (0.1.2) 

有人之前遇到过这个错误吗? 如果是这样,你是如何解决的?

临时修复是将gem文件中的Thor版本设置为最后一个版本。

 gem 'thor', '0.19.1' 

似乎最新的gem发布打破了它。 一旦修复,那么这个错误就会消失。

对于在创建新的Ruby on Rails应用程序或其他任何类似中间人时遇到问题的人,您可以卸载Thor并专门安装旧版本:

 gem uninstall thor gem install thor -v 0.19.1 

我今晚和Thor 0.19.2有过类似的问题。

这对我有用。 请确保备份所有数据。 我对Rails很新,所以我不知道这会带来什么后果。

首先,你需要删除Thor 0.19.2。

 gem uninstall thor 

当它要求您确认删除时键入“Y”。 然后,安装以前版本的Thor。

 gem install thor -v 0.19.1 

您可能会收到关于被锁定到0.19.2的错误 – 进入项目的gemfile.lock,找到包含Thor的行。 将0.19.2更改为0.19.1。

您可能需要重新启动已打开的任何终端窗口。 祝好运!

我自己就碰到了这个。 我已经和Rails一起工作了将近一年,所以我就像“呃那么我不知道我在做什么?Orrrr?” 的xD。

我正在使用基于Ubuntu的Linux发行版。

我将此行添加到我的Gemfile中:

gem’托尔’,’0.19.1′

然后我运行命令“bundle update thor”以使其获取我需要的确切版本。 现在我的发电机再次工作。

你也可以尝试:

bundle update thor

它对我有用。