3

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

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

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

require 'mygem'
require 'innermodule'

这是正常行为,还是 gemspec 有问题MyGem

4

1 回答 1

5

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

在命名和文件路径约定方面,您的 gem 的构建/打包方式听起来像是一个问题。

构建 gems 和我上面提到的内容通常遵循一些常见的约定

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

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

#lib/mygem.rb
require 'innermodule'

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

require 'mygem'
于 2012-12-10T17:21:34.257 回答