Tratando de construir una gema, obtener una gema :: InvalidSpecificationException: [...] no son archivos"

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

  •  26-10-2019
  •  | 
  •  

Pregunta

Estoy tratando de construir una joya personalizada que escribí llamado 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 Se ve como esto:

# 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 cometidos y el estado GIT está limpio.

Desde dentro de la parte superior client_package directorio, ejecuto gem build client_package.gemspec y obtenga 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 me parecen ser archivos. De todos modos, pensé que hay algún problema de ruta si no está viendo estos archivos, y solo haciendo una prueba y error descubrí que si subo un directorio (uno por encima del nivel superior client_package) y luego corre gem build client_package/client_package.gemspec eso lo hace Parece funcionar al principio, creando el archivo client_package-1.0.0.gem. Pero algo todavía está mal. Si luego instalo esa gema con gem install client_package-1.0.0.gem Eso también parece funcionar. Pero entonces esto:

require 'rubygems'
require 'client_package'

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

Siento que me falta algo pequeño pero importante. ¿Algunas ideas?

¿Fue útil?

Solución

Esto sería pequeño pero importante:

Debería split('\n') ser 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 contiene una sola cadena multilínea, no una matriz de múltiples cadenas.

Otros consejos

Excusas para resucitar este hilo antiguo, pero encontré otra causa: si no se registró en Git, algunos viejos (archivos eliminados) podrían interferir: en el disco no existen, pero Git Ls-Files Migh los informa como incluidos en el joya.

Verifique los archivos y este error exacto ha terminado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top