Cercando di costruire una gemma, ottenendo un gioiello :: InvalidSpecificationException: “[...] non sono i file”

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

  •  26-10-2019
  •  | 
  •  

Domanda

Sto cercando di costruire un gioiello personalizzato ho scritto chiamato client_package ma sta fallendo.

Il mio Directory struttura si presenta come questo:

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...

e il mio aspetto client_package.gemspec come questo:

# 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

e tutti i miei file sono impegnati e lo stato git è pulito.

Da all'interno della directory principale client_package, corro gem build client_package.gemspec e ottengo questo errore:

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

Questa è sconcertante per me, perché quelli certamente sembrano essere i file da me. Ad ogni modo, ho pensato che ci sia qualche problema di percorso, se non è vedere questi file, e solo facendo alcuni tentativi ed errori ho scoperto che se vado in una directory (uno sopra l'client_package-livello superiore) e gem build client_package/client_package.gemspec quindi eseguirlo fa sembrano funzionare in un primo momento, la creazione del file client_package-1.0.0.gem. Ma qualcosa è ancora sbagliata. Se dunque io installo quella gemma con gem install client_package-1.0.0.gem che appare anche al lavoro. Ma allora questo:

require 'rubygems'
require 'client_package'

I ritorni LoadError: no such file to load -- client_package.

mi sento come Devo mancare qualcosa di piccolo ma importante. Tutte le idee?

È stato utile?

Soluzione

This'd essere piccolo ma importante:

dovrebbe essere split('\n') split("\n")?

Perché sembra che

[".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...
"]

potrebbe essere una matrice contenente una singola stringa multilinea, non una matrice di più stringhe.

Altri suggerimenti

Le scuse per resuscitare questo thread vecchio, ma ho trovato un'altra causa: se non è stata selezionata in git, alcuni vecchi (i file cancellati) potrebbero interferire: sul disco che non esistono, ma git ls-files migh segnalarli come essere inclusi nella gemma.

Controlla nei file e questo errore esatto è finita.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top