Cercando di costruire una gemma, ottenendo un gioiello :: InvalidSpecificationException: “[...] non sono i file”
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?
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.