3

カスタムRubygemを作成しました。それを呼び出すとMyGem、ファイルには次のものlib/innermodule.rbが含まれます。

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

開発中の別の宝石からこれを参照するには、次のことを行う必要があります。

require 'mygem'
require 'innermodule'

これは正常な動作ですか、それともgemspecに問題がありMyGemますか?

4

1 に答える 1

5

通常、gemに含めるファイルを指定するだけなので、これが必ずしもgemspecの問題であるかどうかはわかりません。Gemspecは、gemが別のアプリに必要とされる方法とは実際には何の関係もありません。

ネーミングとファイルパスの規則に関して、gemの構築/パッケージ化の方法に問題があるように思われます。

宝石を構築するために通常従ういくつかの一般的な規則と私が上で参照したものがあります

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 に答える