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.