tutorial rails how gems for create ruby rubygems gem gemspecs

rails - ruby gem tutorial



Intentando construir una gema, obteniendo una Gem:: InvalidSpecificationException: "[...] no son archivos" (2)

Estoy tratando de construir una gema personalizada que escribí llamada client_package pero está fallando.

Mi estructura de directorio se ve así:

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

Y mi client_package.gemspec ve así:

# 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

Y todos mis archivos están comprometidos y el estado de git está limpio.

Desde dentro del directorio superior de client_package , ejecuto gem build client_package.gemspec y obtengo este error:

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

Esto es desconcertante para mí, porque ciertamente esos son archivos para mí. De todos modos, me di cuenta de que hay algún problema en la ruta si no se ven estos archivos, y al hacer una prueba y error, descubrí que si subía un directorio (uno encima del client_package nivel client_package ) y ejecutaba gem build client_package/client_package.gemspec parece funcionar al principio, creando el archivo client_package-1.0.0.gem . Pero algo sigue mal. Si luego instalo esa gema con gem install client_package-1.0.0.gem que también parece funcionar. Pero entonces esto:

require ''rubygems'' require ''client_package''

Devuelve LoadError: no such file to load -- client_package .

Siento que debo estar perdiendo algo pequeño pero importante. ¿Algunas ideas?


Esto sería pequeño pero importante:

¿Debería split(''/n'') split("/n") ?

Porque parece

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

podría ser una matriz que contenga una sola cadena multilínea, no una matriz de múltiples cadenas.


Hay excusas para resucitar este hilo antiguo, pero encontré otra causa: si no verificaste git, algunos de los viejos (archivos eliminados) podrían interferir: en el disco no existen, pero git ls-files podría informar que están incluidos en el joya.

Compruebe en los archivos y este error exacto ha terminado.