宝石を構築しようとすると、宝石を取得しようとする:: nivalidSpecificiationException:「[…]はファイルではありません」

StackOverflow https://stackoverflow.com/questions/7815062

  •  26-10-2019
  •  | 
  •  

質問

私が書いたカスタムジェムを作成しようとしています 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

これらは確かに私にとってファイルのように見えるので、これは私には不可解です。とにかく、これらのファイルが表示されていない場合、いくつかのパスの問題があると思いました。試行錯誤を行っているだけで、ディレクトリを上がって(トップレベルの上にある場合) 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.

私は小さなものが重要だが重要なものを見逃しているに違いないと感じています。何か案は?

役に立ちましたか?

解決

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

したほうがいい 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...
"]

複数の文字列の配列ではなく、単一のマルチライン文字列を含む配列である可能性があります。

他のヒント

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

ファイルを確認すると、この正確なエラーは終了します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top