1

次のようにして単純な宝石を作成しました。

  1. testgem.gemspec

    Gem::Specification.new do |s|
      s.name = 'testgem'
      s.version = '0.0.1'
      s.summary = "code generation"
      s.authors = ['asdf']
    end
    
  2. 次のファイル レイアウトを作成しました。

    testgem.gemspec
    Gemfile
    lib/
    lib/testgem.rb
    lib/testgem/other.rb
    
  3. 以下を実行しました:

    gem build testgem.gemspec
    
    WARNING:  no description specified
    WARNING:  no email specified
    WARNING:  no homepage specified
    Successfully built RubyGem
    Name: testgem
    Version: 0.0.1
    File: testgem-0.0.1.gem
    
  4. それをインストールしました:

    gem install ./testgem-0.0.1.gem 
    Successfully installed testgem-0.0.1
    1 gem installed
    
  5. irbがそれを見ることができるかどうかをテストしました:

    irb
    require 'testgem'
    oadError: cannot load such file -- testgem
    

Ruby 1.9.3-p194 を使用しています

私がすればインストールされているようです:

gem list
..
testgem (0.0.1)
..

問題は何ですか?

4

3 に答える 3

3

ライブラリを検索パスに追加する必要があります。追加するだけ

$:.push File.expand_path("../lib", __FILE__)

.gemspec の上に

于 2012-09-25T04:08:43.687 に答える
1

Ruby で使用する場合、 gemではなくfilerequireをロードしようとしています。もちろん、ファイルは gem に含めることができます。慣例により、gem は gem 自体と同じ名前のファイルを持つため、gem を使用する場合は. ただし、必要な宝石を使用する場合など、常にそうとは限りません。foorequire 'foo'bcrypt-rubyrequire 'bcrypt'

さらに、gem は必ずしもすべての塗りつぶしを含む必要はありません。その一例がrailsgem です。gem にはファイル自体は含まれていませんが (少なくともバージョン 3.2 では)、さまざまな Rails コンポーネントに依存しているため、それらすべてを 1 つのステップでインストールできます。

あなたの場合、lib/testgem.rbgems プロジェクト ディレクトリにファイルがありますが、それを gem に含めていません。含めるファイルを指定する必要があります。デフォルトでは何も含めません。

プロジェクトディレクトリにすべてのファイルを単純に含めるには、次のようなものを追加できます。

s.files = Dir.glob '**/*'

あなたのgemspecに。

于 2012-09-23T22:05:11.470 に答える
-1

require 'rubygems'最初にする必要があります。

于 2012-09-23T21:00:08.967 に答える