0

我正在将 Sorbet 添加到一个相当普通的中小型 Rails 应用程序中。

运行安装脚本srb init后,我得到了这个错误确认:

Adding `typed:` sigils did not converge after 50 tries.
Would you like to continue anyway? [Y/n] 

我选择了“Y”。脚本随后停顿了一会儿,报告说尝试了 100 次后不成功,但随后又继续说“完成”。我不清楚这是否意味着它正在工作。

但是,当我运行时bundle exec srb tc,会出现很多问题:

  • 它似乎没有添加任何印记,我认为它会

  • 它似乎报告了核心类中的问题:

https://github.com/sorbet/sorbet/tree/645cc5344236f8e32d18320dd728ea6954814229/rbi/core/class.rbi#L136: The corresponding argument arg0 in the previous definition was not a splat argument
     136 |  def instance_methods(arg0=T.unsafe(nil)); end
  • 它似乎在报告我无法控制的 gems 中的问题,比如 activerecord:
sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi:464: Method ActiveRecord::Base.before_create redefined without matching argument count. Expected: 2, got: 3 https://srb.help/4010

我必须手动忽略这些项目吗?我开始这样做,但我认为这也不正确。总的来说,我不确定设置是否有效,或者我收到的初始错误是否是问题所在。

版本信息:

sorbet (0.5.5384)
sorbet-runtime (0.5.5384)
sorbet-static (0.5.5384-universal-darwin-14)

rails-6.0.2.1
ruby 2.6.4p104
macOS Mojave
MacBook Pro 2017

谢谢

4

1 回答 1

0

我相信我上面提到的段错误是核心问题,并且错误被安装脚本吞噬了。

我按照此处的建议尝试查找有问题的文件。我注意到 Sorbet 花费大量时间检查.fingerprint我们项目中的 Rust 文件(嵌入到我们的带有 Helix 的 Rails 应用程序中)。但是我无法重现段错误。删除该目录后,我能够运行srb init!现在我的设置按预期工作!

于 2020-02-21T17:21:12.380 回答