Попытка построить драгоценный камень, получить драгоценный камень :: InvalidSpeciationException: «[…] не файлы»
Вопрос
Я пытаюсь создать пользовательский драгоценный камень, который я написал client_package
Но это терпит неудачу.
Моя структура каталогов выглядит так:
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...
И мой client_package.gemspec
Похоже:
# 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
И все мои файлы совершены, а состояние GIT чистое.
Из вершины client_package
каталог, я бегу gem build client_package.gemspec
И получить эту ошибку:
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
Для меня это озадачивает, потому что они, безусловно, являются для меня файлами. В любом случае, я подумал, что есть какая-то проблема пути, если он не видит эти файлы, и просто совершаю пробную и ошибку, я обнаружил, что если я подпрыгную в каталог (один над верхним уровнем client_package
) и затем бежать gem build client_package/client_package.gemspec
Это делает Поначалу работает, создавая файл client_package-1.0.0.gem
. Анкет Но что -то все еще не так. Если я установите этот драгоценный камень с gem install client_package-1.0.0.gem
Это также, кажется, работает. Но тогда это:
require 'rubygems'
require 'client_package'
Возврат LoadError: no such file to load -- client_package
.
Я чувствую, что мне не хватает чего -то маленького, но важно. Любые идеи?
Решение
Это было бы мало, но важно:
Должен split('\n')
быть split("\n")
?
Потому что это похоже на
[".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...
"]
Может быть массив, содержащий одну многослойную строку, а не массив нескольких строк.
Другие советы
Оправдания для воскресения этого старого потока, но я нашел другую причину: если вы не зарегистрировались в GIT, некоторые старые (удаленные файлы) могут мешать: на диске они не существуют, но Git LS-Files Migh сообщают о них как включены в жемчужина
Проверьте файлы, и эта точная ошибка закончилась.