我已经构建了一个自定义的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存在问题?
答案 0 :(得分:4)
我不知道这是否一定是你的gemspec问题,因为你通常只指定要包含在gem中的文件。 Gemspecs与宝石进入另一个应用程序的方式并没有任何关系。
对于命名和文件路径约定而言,宝石的构建/打包方式听起来有点问题。
有一些常见的约定通常用于构建宝石以及我在上面引用的内容
http://guides.rubygems.org/patterns/有一个很好的概述。
基本上,您通常希望创建位于“lib”目录中的单个文件(通常是您的gem的名称)。在这种情况下,“lib / mygem.rb”会对gem的内部依赖关系有个别要求。
#lib/mygem.rb
require 'innermodule'
然后在任何其他应用程序中包含gem(以及内部模块),你可以做到
require 'mygem'