Ruby:自定义 gem 需要 'require' 用于其中的模块

标签 ruby module gem require

我构建了一个自定义 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/

相关文章:

ruby - 使用 Watir 检查错误链接

ruby - 检查字符串是否是未知子字符串的重复

class - 将python类拆分为多个文件

database - Magento 2 InstallSchema 方法未执行

Android Studio 关于应用模块的最佳实践

ruby-on-rails - Monkey(也许?)在我的 Rails 应用程序中修补一个 Gem

javascript - 如何在 ruby​​ on Rails 中使用复选框启用/禁用输入字段

带有 "debugger"gem 的 RubyMine 6.0.2 没有修改 Gemfile.lock?

ruby - "Could not find a valid gem in any repository"(rubygame 等)

ruby-on-rails - 如何从 rails_admin 中删除图像?