18

TL;博士:

不要在现有的 git 存储库中运行 bundle。奇怪的事情会发生而没有任何错误消息。

原始问题:

我通过调整本教程中的步骤构建了一个 gem:

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

作为最后一步,我运行 gem build .gemspec

这成功了,但是当我安装 gem 时,我发现包含我的代码的关键文件不在 gem 中。同一(lib)目录中的另一个文件“version.rb”确实存在于 gem 中。

我不知道如何开始调试... bundler/gem build 如何决定要包含在 gem 中的文件?

编辑:

我的工作流程是:

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 / 分辨率

我终于能够通过将所有代码提交到远程存储库、创建一个干净的克隆并构建 gem 来完成这项工作。新的 gem 包含所有必需的文件。

有点历史......我最初创建了代码并在考虑制作 gem 之前提交了它(这是我的第一个 gem)。然后我在原始存储库中使用了 bundle ,这没有抱怨,但可能是奇怪的原因。

4

1 回答 1

31

bundler 为您做的一件事是启动一个本地 git 存储库来对您的 gem 代码进行版本管理。检查您是否已在 git 中添加文件

git add lib/gem_name/missing_file.rb

Bundler 生成的 gem 在内部使用 git 来跟踪 gem 源文件的“成员资格”。您可以在 .gemspec 中看到这一点,它使用反引号调用 git 并生成文件列表:

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

请注意,这也意味着您应该注意您列出的内容.gitignore

于 2013-06-04T15:59:28.893 回答