问题标签 [sorbet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
310 浏览

sorbet - T::Struct 出现“尝试重新定义道具”错误

我正在尝试使用 T::Struct 来避免类中的一些样板:

https://github.com/andyw8/codeclimate-engine-rb/pull/13/commits/d1fd72e22a4b9737ef2fe759215fb1c73c25e3bb

srb tc不报告任何错误,但是当我运行测试时它失败了:

如果我重新订购道具,我会得到同样的错误,但description相反。

是不是因为我使用了一个结构,但也在上面定义了方法?我知道 RubyStruct支持这一点,但我不确定 Sorbet 的T::Struct.

0 投票
1 回答
224 浏览

sorbet - 处理“sorbet-typed”和“gems”RBI 文件之间的冲突

我已经在 Rails 代码库中安装了 Sorbet,并且看到许多出现以下错误的实例:

为了使类型错误消失,我要么必须更改typed: truetyped: false其中一个文件(其中不包括一些重叠的类型),要么我必须手动进入并删除/注释掉重叠的方法(其中耗时且易碎)。

我想知道是否有某种编程解决方案,我可以说“在发生冲突的情况下,使用具有更高数量的方法”或“始终选择冰糕类型的定义”。

同样,这是在 Rails 代码库中,但我想这将存在于手动生成和自动生成的 RBI 之间的任何冲突。

0 投票
1 回答
228 浏览

sorbet - 使用 bundler 和 dependabot 生成 Sorbet RBI 文件

我正在尝试将 Sorbet 添加到由 20 位工程师维护的 Rails 代码库中。我们使用dependabot 非常频繁地更新gem,我宁愿不必srb rbi update在每个版本bump 上手动运行。有没有办法在srb rbi update每次运行时自动运行bundle install,并且只更新已更改的 gem(所以不需要 5 分钟)?

0 投票
1 回答
124 浏览

ruby - Sorbet 没有报告缺少的方法实现(与 RBI 签名相比),我在这里做错了吗?

我有一个文件my_class.rb

安装和初始化 Sorbet后,我​​决定为这个文件写一个 RBI 签名sorbet/rbi/my_class.rbi

我特意为一种adjust方法添加了一个签名,以查看 Sorbet 是否会报告它。但是 Sorbet 没有报告任何错误。

我在这里配置冰糕级别是错误的,还是做错了什么?

谢谢你。

0 投票
1 回答
161 浏览

ruby - 如何在使用冰糕的项目中包含 Enumerable?

如果我定义一个可枚举的类

这种类型检查srb tc得很好,但如果我尝试运行srb rbi update,我会得到一个错误。检查reflection.json.err

将声明更改Elem为(即如何Enumerablerbi中定义)

现在srb tc给了我错误

Elem声明更改为

现在srb tc给了我错误

如何Enumerable使用 sorbet 在项目中实现一个类,以便它在运行时进行类型检查并且不会出错srb rbi update

0 投票
1 回答
420 浏览

sorbet - 冰糕的初始错误和设置问题

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

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

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

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

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

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

  • 它似乎在报告我无法控制的 gems 中的问题,比如 activerecord:

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

版本信息:

谢谢

0 投票
1 回答
50 浏览

sorbet - 如何在带有 sigs 的 gem 中包含类型?

假设我有一个名为的共享 gem thing,它可以在多个其他项目中使用,例如example-project. 我想在我的thinggem 中使用冰糕来利用类型检查。如何让我的消费项目检查我的 gem 中的类型?

例如,代码可能如下所示

东西宝石

示例项目

怎么了

运行后srb rbi update,我得到一个sorbet/rbi/gems/thing.rbi

这没有我期望的 gem 的信号,srb tc也不会引发我期望的错误。

我尝试过的其他事情

包括rbi/thing.rbi在宝石中

这行得通,但我宁愿在 gem 代码中内联写我的 sig,而不是维护单独的 rbi 文件。是否有任何工具可以获取.rb带有 sigs 的文件并输出.rbi文件(并且可能从.rb文件中剥离 sigs,以便它们可以在没有冰糕的情况下分发 gem)。我正在考虑一个类似于 typescript 的工作流程tsc --declaration,它来自.ts => .d.ts + .js.

0 投票
2 回答
48 浏览

sorbet - ActiveModelSerializer 和 VOID 类型响应

解决了!

孩子们,不要定义read_attribute_for_serialization返回void

所以我正在尝试将冰糕集成到我的一个 Rails 应用程序中。我已经在 Gemfile 中添加了冰糕

一切看起来都不错,我能够在Price类中添加 sigs 并解决应用程序内的类型检查问题。

我遇到的问题是序列化程序的返回值

所以序列化器看起来大致是这样的

在规范中,当我想验证关联 ( has_one) 属性的返回值时,我得到了这个

价格序列化器看起来大致是这样的

我不明白这里到底发生了什么以及为什么发生。提前致谢

编辑:在帖子顶部添加了“解决方案”

0 投票
2 回答
908 浏览

ruby-on-rails - 如何为 Ruby 中新添加的模型生成 sorbet.rbi 文件?

我创建了一个新模型 Attachment.rb 并运行

srb tc

但是冰糕抛出错误,因为附件模型不存在该方法https://srb.help/7003

我尝试运行srb rbi update但结果它重新运行了我的整个应用程序。

我已经搜索并阅读了所有文档,但我找不到任何关于如何仅为模型生成 RBI 文件的信息。提前致谢!

0 投票
2 回答
298 浏览

ruby - 配置 Sorbet 以将所有没有注释的文件视为输入:忽略注释

我的问题与这个有关1但我可以将类型注释添加到具有类型注释的文件中。我们只是不想在数百个文件上自动生成评论,尽管文件中没有发生任何其他事情。有没有办法配置 Sorbet 像这样工作?