我构建了一个自定义 Ruby gem。将其命名为 MyGem
,然后文件 lib/innermodule.rb
包含:
module MyGem
module InnerModule
def self.foo(); puts "Hello world!"; end
end
end
要从另一个正在开发的 gem 中引用它,我必须这样做:
require 'mygem'
require 'innermodule'
这是正常行为,还是 MyGem
的 gemspec 有问题?
最佳答案
我不知道这是否一定是您的 gemspec 的问题,因为您通常只指定要包含在 gem 中的文件。 Gemspecs 与另一个应用程序需要 gem 的方式没有任何关系。
这听起来像是您的 gem 构建/打包方式的问题,特别是在命名和文件路径约定方面。
在构建 gem 时通常遵循一些通用约定以及我在上面引用的内容
http://guides.rubygems.org/patterns/有一个很好的概述。
基本上,您通常希望创建位于“lib”目录中的单个文件(通常是您的 gem 的名称)。在这种情况下,“lib/mygem.rb”将对 gem 的内部依赖项有单独的要求。
#lib/mygem.rb
require 'innermodule'
然后要在任何其他应用程序中包含 gem(以及内部模块),您可以这样做
require 'mygem'
关于Ruby:自定义 gem 需要 'require' 用于其中的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13804062/