创建一个简单的ruby gem,允许用户调用已定义的方法?

时间:2011-10-04 02:22:48

标签: ruby rubygems

我一直在寻找一些关于创建红宝石宝石的教程,但似乎都过于复杂。从本质上讲,我想要的只是创建一个gem(简单示例警报)允许用户在安装gem之后在其代码中放置方法add_one(x)

许多教程解释了如何使用Classname.method()调用gem的方法,但这真的不是我想要的。 RyanB有一个很好的例子here,但我无法让它工作 - 主要是因为uniquify.rb底部的3行代码读取。

class ActiveRecord::Base
  include Uniquify
end

在我的情况下,我的主模块叫做AddOne,那我该如何做呢?再次,抱歉这个简单的例子,我只是想开始使我的宝石允许用户调用普通方法,而不指定模块或类。在Ryan的例子中,他能够在代码中简单地调用uniquify()

1 个答案:

答案 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,我可以访问其中定义的任何内容。但是,它可能会导致意想不到的后果。做你需要做的事,但要明白它可能不是最好的主意。因此,您将事物构建到类或模块中以包含它们,并防止与其他代码冲突。祝你好运。