我一直在寻找一些关于创建红宝石宝石的教程,但似乎都过于复杂。从本质上讲,我想要的只是创建一个gem(简单示例警报)允许用户在安装gem之后在其代码中放置方法add_one(x)
。
许多教程解释了如何使用Classname.method()
调用gem的方法,但这真的不是我想要的。 RyanB有一个很好的例子here,但我无法让它工作 - 主要是因为uniquify.rb底部的3行代码读取。
class ActiveRecord::Base
include Uniquify
end
在我的情况下,我的主模块叫做AddOne,那我该如何做呢?再次,抱歉这个简单的例子,我只是想开始使我的宝石允许用户调用普通方法,而不指定模块或类。在Ryan的例子中,他能够在代码中简单地调用uniquify()
。
答案 0 :(得分:1)
在给出的示例中,他可以将uniquify
作为方法调用,因为他在包含ActiveRecord::Base
的类中调用它。 (他在uniquify
... class Product < ActiveRecord::Base
区域内调用end
这里没有任何真正的魔法。
根据我的理解,你想要的东西很容易实现,但不是一个好主意,考虑“最佳实践”。您可以在gem中定义任何您想要的内容。例如,我可以在名为say_hello.rb
的gem中打包一个名为salutations
的文件。
<强> say_hello.rb 强>
def say_hello
puts "Hello everybody"
end
通过要求打包的宝石salutations
,我可以访问其中定义的任何内容。但是,它可能会导致意想不到的后果。做你需要做的事,但要明白它可能不是最好的主意。因此,您将事物构建到类或模块中以包含它们,并防止与其他代码冲突。祝你好运。