这个 Ruby 错误可以用 NeoVim/ALE/RuboCop/Syntastic 捕获吗?

Can this Ruby error be caught with NeoVim/ALE/RuboCop/Syntastic?

我是 Ruby 的新手,正在尝试使用我也是新手的 NeoVim/ALE。我来自使用 syntastic 插件的 Perl,我正在尝试弄清楚如何最好地设置 NeoVim/ALE/RuboCop。我以前从未使用过 delinter。

我的困惑源于这段代码:

#!/usr/bin/env ruby

r = Array() # Improper array initialization, should be Array.new()
puts r

当运行时,我得到:

Traceback (most recent call last):
        1: from /Users/me/ruby/workshop/dink.rb:3:in `<main>'  
/Users/me/ruby/workshop/dink.rb:3:in `Array': wrong number of arguments (given  
0, expected 1) (ArgumentError)

RuboCop 没有发现这个错误。我打开了 syntastic,它也没有发现错误。我认为是因为这是一个 运行 时间错误,而不是我认为的编译时间错误。脚本上的 运行 ruby -c 也没有产生任何错误。但也许我错了,没有正确使用语法检查工具。有人可以确认这确实是一个 运行 时间错误并且在执行脚本之前不可能捕捉到吗?

我还有第二个问题:我需要使用 Ruby 的合成器吗?它还有什么是 RuboCop 没有做的吗?

谢谢。

两个工具都是正确的,因为在Kernel中定义了Array()方法。

这意味着这不是语法而是运行时错误,因为该方法需要至少一个参数。

来自docs

Array(arg) → array Returns arg as an Array.

First tries to call to_ary on arg, then to_a. If arg does not respond to to_ary or to_a, returns an Array of length 1 containing arg.