我正在尝试使用以下说明构建 Ruby gemhttp://guides.rubygems.org/make-your-own-gem/ http://guides.rubygems.org/make-your-own-gem/。以下似乎工作正常并生成了 *.gem 文件。
gem build mygem.gemspec
以下内容似乎也成功(仅当以sudo
):
sudo gem install mygem-0.0.1.gem
然而,当我尝试require 'mygem'
在 irb 内,我收到以下错误:
LoadError: cannot load such file -- mygem
我在 Stackoverflow 上看到过类似的错误,但无法弄清楚我的具体情况出了什么问题。我可以毫无问题地要求其他宝石(不是我的)。我的宝石确实出现在输出中gem list
但它不会加载 require。
FWIW我正在使用rbenv,这对我来说是全新的。
这是输出gem env
:
-
红宝石版本:2.4.5
Ruby 版本:2.1.5(2014-11-13 补丁级别 273)[x86_64-darwin14.0]
安装目录:/Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0
Ruby 可执行文件:/Users/speersj/.rbenv/versions/2.1.5/bin/ruby
可执行目录:/Users/speersj/.rbenv/versions/2.1.5/bin
规格缓存目录:/Users/speersj/.gem/specs
系统配置目录:/Users/speersj/.rbenv/versions/2.1.5/etc
红宝石平台:
ruby
x86_64-达尔文-14
-
宝石路径:
-
宝石配置:
:update_sources => true
:详细 => 正确
:回溯=>假
:bulk_threshold => 1000
-
远程来源:
- https://rubygems.org/ https://rubygems.org/
-
外壳路径:
/Users/speersj/.rbenv/versions/2.1.5/bin
/用户/speersj/.rbenv/libexec
/Users/speersj/.rbenv/plugins/ruby-build/bin
/用户/speersj/.rbenv/shims
/用户/speersj/.rbenv/bin
/Library/Frameworks/Python.framework/Versions/3.4/bin
/usr/local/bin
/usr/local/sbin
/usr/local/heroku/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/usr/local/smlnj/bin
Gemspec:
Gem::Specification.new do |spec|
spec.name = 'mygem'
spec.version = '0.0.1'
spec.date = '2015-01-05'
spec.summary = "mygem"
spec.description = "Attempting to build a gem"
spec.authors = ["speersj"]
spec.email = # my email here
spec.files = ['lib/command.rb', 'lib/connection.rb']
spec.homepage = ''
spec.license = 'MIT'
end
The spec.files
您的条目gemspec
不包括mygem.rb
文件,这样该文件在构建时就不会在 gem 中。只有此条目中列出的文件才会包含在最终的 gem 中。
最简单的解决方案就是添加mygem.rb
到数组:
spec.files = ['lib/command.rb', 'lib/connection.rb', 'lib/mygem.rb']
这是一个相当简单的修复,您可能想做一些更灵活的事情,例如使用Dir glob http://ruby-doc.org/core-2.2.0/Dir.html#method-c-5B-5D:
spec.files = Dir['lib/**/*.rb']
事实上Rubygems 指南建议你这样做 http://guides.rubygems.org/make-your-own-gem/#requiring-more-files/(文本来自该部分的末尾):
如果您向 gem 添加了更多文件,请务必记住在发布新 gem 之前将它们添加到 gemspec 的文件数组中!由于这个原因(除其他外),许多开发人员使用以下方法自动执行此操作Hoe https://github.com/seattlerb/hoe, Jeweler https://github.com/technicalpickles/jeweler, Rake https://github.com/jimweirich/rake, Bundler http://railscasts.com/episodes/245-new-gem-with-bundler, or 只是一个动态 gemspec https://github.com/wycats/newgem-template/blob/master/newgem.gemspec.
另外,你确实需要修复你的权限问题 https://stackoverflow.com/a/27793163/214790,你不应该需要sudo
将 gems 安装到您自己的主目录中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)