Отсутствует файл в Gem после сборки

TL; ДР:

Не запускайте пакет в существующем репозитории git. Странные вещи произойдут без сообщений об ошибках.

Оригинальный вопрос:

Я построил камень, адаптировав шаги этого урока:

http://net.tutsplus.com/tutorials/ruby/gem-creation-with-bundler/

В качестве последнего шага я запустил gem build.gemspec

Это удается, но когда я устанавливаю gem, я нахожу критический файл, тот, который содержит мой код, не находится в камне. Другой файл в том же каталоге (lib), "version.rb", существует в камне.

Я не знаю, как начать отладку этого... как сборщик /gem build определяет, какие файлы включать в драгоценный камень?

Edit:

Мой рабочий процесс:

gem build <project_name>.gemspec
gem unpack <project_name>
=> confirm file does not exist in <unpacked>/lib/

gem install <project name>
=> confirm file structure in ~/home/stefan/.rvm/... contains gem, but does not contain desired file

Изменить 2/Разрешение:

Наконец-то я смог получить эту работу, передав весь мой код в удаленный репозиторий, создав чистый клон и построив драгоценный камень. Новый жемчуг включал все необходимые файлы.

Немного истории... Я изначально создал код и совершил его, прежде чем думать о создании драгоценного камня (это мой первый камень). Затем я использовал пакет в оригинальном репозитории, который не жаловался, но, вероятно, был причиной странности.

Ответы

Ответ 1

Одна из вещей, которую сделал пакет для вас, - это запуск локального репозитория git для управления вашим кодом драгоценности. Убедитесь, что вы добавили файл в git

git add lib/gem_name/missing_file.rb

Созданные Bundler драгоценные камни используют git для отслеживания "членства" исходных файлов для драгоценного камня. Это можно увидеть в .gemspec, где он использует обратные вызовы для вызова git и создания списка файлов:

gem.files         = `git ls-files`.split($/)

Обратите внимание, что это также означает, что вы должны обратить внимание на то, что вы перечислите в .gitignore