我正在开发一个Ruby gem,它将是一个REST API包装器。
我想要做的是拥有一个可以使用与Rails / ActiveRecord类似的方法从gem实例化的类,其中'方法,以便我可以在方法中传递类似SQL的语法并返回一些JSON。类似的东西:
include 'my-gem'
test = MyGem::ClassExample.where('name like %test%')
# returns JSON object from REST API
我担心的是,如果我将这个gem包含在Ruby on Rails应用程序中,那么这个' where'方法与ActiveRecord的命名冲突'其中'或者'哪里'方法是我在班上定义的方法吗?
基本上,我认为它应该没问题,但是由于Rails魔法/我的无知,我害怕不得不重构一堆测试并重命名一堆方法。
顺便说一下,我并不担心清理输入,REST API不提供直接的SQL /数据库访问,它是一个闭源产品。有一些配置需要提前完成,我没有包含在这个例子中,我只是想知道我是否可以使用这个方法名称,或者是否有可能与我发生冲突的最佳实践/潜在问题。
答案 0 :(得分:1)
类是命名空间。
如果您在自己的类上定义where
而Rails在另一个类上定义where
,则不会发生冲突。这是实例方法和类方法的情况,它们毕竟只是类的singleton类上的实例方法。
但是,如果您要在Object或其他顶级类上定义where
,那么您将遇到大量冲突,因为所有类都是这些类的子类。