Ruby:Custom gem要求其中的模块“require”

时间:2012-12-10 15:35:19

标签: ruby module gem require

我已经构建了一个自定义的Ruby gem。称之为MyGem,然后文件lib/innermodule.rb包含:

module MyGem
    module InnerModule
        def self.foo(); puts "Hello world!"; end
    end
end

要从正在开发的另一个宝石中引用它,我必须这样做:

require 'mygem'
require 'innermodule'

这是正常行为,还是MyGem的gemspec存在问题?

1 个答案:

答案 0 :(得分:4)

我不知道这是否一定是你的gemspec问题,因为你通常只指定要包含在gem中的文件。 Gemspecs与宝石进入另一个应用程序的方式并没有任何关系。

对于命名和文件路径约定而言,宝石的构建/打包方式听起来有点问题。

有一些常见的约定通常用于构建宝石以及我在上面引用的内容

http://guides.rubygems.org/patterns/有一个很好的概述。

基本上,您通常希望创建位于“lib”目录中的单个文件(通常是您的gem的名称)。在这种情况下,“lib / mygem.rb”会对gem的内部依赖关系有个别要求。

#lib/mygem.rb
require 'innermodule'

然后在任何其他应用程序中包含gem(以及内部模块),你可以做到

require 'mygem'