22

私が書いたカスタム gem を作成しようとしてclient_packageいますが、失敗しています。

私のディレクトリ構造は次のようになります。

client_package
    Gemfile
    Gemfile.lock
    client_package.gemspec
    Rakefile
    Readme.md
    .gitignore
    .git
        ...git files...
    lib
        client_package.rb
        client_package
            version.rb
            api.rb
            ...more...

そして、私は次のようにclient_package.gemspec見えます:

# encoding: UTF-8
require File.expand_path('../lib/client_package/version', __FILE__)

Gem::Specification.new do |s|
    s.name = 'client_package'
    s.version = ClientPackage::VERSION
    s.platform = Gem::Platform::RUBY

    s.files = `git ls-files`.split('\n')
    s.executables = `git ls-files -- bin/*`.split('\n').map{ |f| File.basename(f) }
    s.require_paths = ['lib']

    # also have s.authors, s.email, s.homepage, s.summary, s.description

    s.add_dependency 'httparty'
    s.add_dependency 'json'
end

すべてのファイルがコミットされ、git の状態はクリーンです。

最上位client_packageディレクトリから実行するgem build client_package.gemspecと、次のエラーが表示されます。

ERROR:  While executing gem ... (Gem::InvalidSpecificationException)
    [".gitignore
Gemfile
Rakefile
Readme.md
client_package.gemspec
lib/client_package.rb
lib/client_package/api.rb
lib/client_package/version.rb
lib/client_package/...more...
"] are not files

これらは確かにファイルのように見えるので、これは私には不可解です。とにかく、これらのファイルが表示されない場合は、パスに問題があると考えました。試行錯誤を行っただけで、ディレクトリ (トップレベルより上の 1 つclient_package) に移動して実行すると、最初は動作しているように見えるgem build client_package/client_package.gemspecことわかりました。 、ファイルを作成しますclient_package-1.0.0.gem。しかし、まだ何かが間違っています。次に、その宝石をインストールすると、gem install client_package-1.0.0.gemそれも機能するように見えます。しかし、これは:

require 'rubygems'
require 'client_package'

を返しますLoadError: no such file to load -- client_package

小さいけれど大切なものを見落としているような気がします。何か案は?

4

2 に答える 2

55

この古いスレッドを復活させる言い訳ですが、私は別の原因を見つけました: git をチェックインしなかった場合、いくつかの古い (削除されたファイル) が干渉する可能性があります: ディスク上にはそれらは存在しませんが、git ls-files はそれらを宝石。

ファイルをチェックインすると、この正確なエラーはなくなります。

于 2014-11-15T11:21:05.077 に答える
15

これは小さいですが重要です:

split('\n')する必要がありsplit("\n")ますか?

のように見えるので

[".gitignore
Gemfile
Rakefile
Readme.md
client_package.gemspec
lib/client_package.rb
lib/client_package/api.rb
lib/client_package/version.rb
lib/client_package/...more...
"]

複数の文字列の配列ではなく、単一の複数行の文字列を含む配列である可能性があります。

于 2011-10-19T00:23:34.280 に答える