Отсутствует файл в 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