Essayer de construire un bijou, obtenir un petit bijou :: InvalidSpecificationException: « [...] ne sont pas des fichiers »
Question
Je suis en train de construire un petit bijou personnalisé que j'ai écrit appelé client_package
mais il échoue.
Ma structure annuaire se présente comme suit:
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...
Et mes client_package.gemspec
ressemble à ceci:
# 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
Et tous mes fichiers sont engagés et l'état git est propre.
à partir du répertoire de client_package
haut, je lance gem build client_package.gemspec
et obtenir cette erreur:
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
Ceci est déconcertant pour moi, parce que ceux qui semblent certainement être des fichiers pour moi. Quoi qu'il en soit, je me suis dit il y a un problème de chemin si elle est de ne pas voir ces fichiers, et juste faire quelques essais et erreurs que j'ai découvert que si je monte un répertoire (un au-dessus du client_package
niveau haut), puis exécutez gem build client_package/client_package.gemspec
Finalité semblent fonctionner dans un premier temps, la création du fichier client_package-1.0.0.gem
. Mais quelque chose est encore mal. Si je puis installer ce petit bijou avec gem install client_package-1.0.0.gem
qui apparaît aussi au travail. Mais ceci:
require 'rubygems'
require 'client_package'
Retours LoadError: no such file to load -- client_package
.
Je sens que je dois manquer petit quelque chose, mais important. Toutes les idées?
La solution
This'd être petite, mais importante:
split('\n')
devraient être split("\n")
?
Parce qu'il ressemble à
[".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...
"]
pourrait être un tableau contenant une seule chaîne multiligne, pas un tableau de plusieurs chaînes.
Autres conseils
Excuses pour ressusciter ce vieux fil, mais je l'ai trouvé une autre cause: si vous n'avez pas vérifié dans git, certains anciens (fichiers supprimés) peuvent interférer: sur le disque n'existent pas, mais ls-les fichiers git MIGH les signalent comme étant inclus dans la gemme.
Vérifiez dans les fichiers et cette erreur exacte est terminée.