【问题标题】:Error 5067 - How can I bypass it and implement Sorbet on my project?错误 5067 - 如何绕过它并在我的项目中实施 Sorbet?
【发布时间】:2022-11-03 04:22:55
【问题描述】:

我使用rails-observers gem,但我无法在没有错误的情况下运行srb tc...

app/models/supplier_observer.rb:3: The super class ActiveRecord::Observer of SupplierObserver does not derive from Class https://srb.help/5067
     3 |class SupplierObserver < ActiveRecord::Observer
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    sorbet/rbi/todo.rbi:20: ActiveRecord::Observer defined here
    20 |module ActiveRecord::Observer; end
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

应用程序/模型/supplier_observer.rb class SupplierObserver &lt; ActiveRecord::Observer

冰糕/rbi/todo.rbi module ActiveRecord::Observer; end

tapioca gem rails-observers 没有解决问题

我需要一种绕过它并在我的项目中实施 Sorbet 的方法

【问题讨论】:

  • 嗯很奇怪。 RBI 应为class ActiveModel::Observer &lt; Object; end

标签: sorbet


【解决方案1】:

由于 todo.rbi 文件是由 Tapioca/Sorbet 为代码库中使用但尚未声明的任何类/模块生成的,它包括所有条目为 modules(因为它不知道它是否应该是类或模块)。在这种情况下,这个假设最终是不正确的。

修复方法是编辑todo.rbi 文件并更改:

module ActiveRecord::Observer; end

在第 20 行至:

class ActiveRecord::Observer; end

顺便说一句,更好的解决方法是让 Tapioca 为rails-observers 生成一个 RBI 文件。您可能只是缺少 sorbet/tapioca/require.rb 文件或其他内容中的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-02
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多