有没有一种优雅的方法来重构与 Ruby/Rails gem 的命名空间冲突?

发布于 2024-12-08 10:38:31 字数 220 浏览 0 评论 0原文

我想使用 Ruby gem Turn,但它目前与模型 (ActiveRecord) 发生冲突已经叫了“转”。最终的结果是我的测试输出失败了。

我意识到我可以简单地重构我的模型,但我想知道是否有一种优雅的方式可以为 gem 命名空间而无需触及我的模型。

有什么建议吗?

I would like to use the Ruby gem Turn, but it currently collides with a model (ActiveRecord) I have called 'Turn'. The end result is that my test output is borked.

I realize I can simply refactor my model, but I'm wondering if there's a graceful way I can namespace the gem without having to touch my model.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

预谋 2024-12-15 10:38:32

不幸的是,没有办法影响 gem 将使用哪些模块(命名空间)。 Ruby 所需的文件将始终在全局范围内进行评估。

gem 作者的最佳实践是使用与 gem 具有相同名称的模块,因此通常您知道安装 gem 时会发生什么。

除了不使用 Turn 之外,唯一的解决方案是更改模型的名称或将其放置在命名空间中。

Unfortunately there's no way to influence which modules (namespaces) a gem will use. Files that are required by Ruby will always be evaluated in the global scope.

It's best practice for gem authors to use a module with the same name of the gem, so usually you know what to expect when you install a gem.

Apart from not using Turn, the only solutions are to change your model's name or place it inside a namespace.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文