有没有一种优雅的方法来重构与 Ruby/Rails gem 的命名空间冲突?
我想使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不幸的是,没有办法影响 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.