我正在尝试使用http://guides.rubygems.org/make-your-own-gem/上的说明构建Ruby gem .以下似乎工作正常,并生成*.gem文件.
gem build mygem.gemspec
Run Code Online (Sandbox Code Playgroud)
以下似乎也是成功的(仅限前言sudo):
sudo gem install mygem-0.0.1.gem
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试require 'mygem'在irb中时,我收到以下错误:
LoadError: cannot load such file -- mygem
Run Code Online (Sandbox Code Playgroud)
我在Stackoverflow上看到过类似的错误,但是在我的具体情况下无法弄清楚出了什么问题.我可以毫无问题地要求其他宝石(不是我的宝石).我的宝石确实显示在输出中,gem list但它不会加载需要.
FWIW我正在使用rbenv,这对我来说是全新的.
这是输出gem env:
RUBYGEMS版本:2.4.5
RUBY版本:2.1.5(2014-11-13 patchlevel 273)[x86_64-darwin14.0]
安装目录:/Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0
RUBY EXECUTABLE:/Users/speersj/.rbenv/versions/2.1.5/bin/ruby
可执行的目录:/Users/speersj/.rbenv/versions/2.1.5/bin
SPEC CACHE目录:/Users/speersj/.gem/specs
SYSTEM CONFIGURATION目录:/Users/speersj/.rbenv/versions/2.1.5/etc
RUBYGEMS PLATFORMS:
红宝石
x86_64的-达尔文-14
创业板路径:
/Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0
/Users/speersj/.gem/ruby/2.1.0
创业板配置:
:update_sources => true
:verbose => true
:backtrace => false
:bulk_threshold => 1000
远程来源:
壳路径:
/Users/speersj/.rbenv/versions/2.1.5/bin
/Users/speersj/.rbenv/libexec
/Users/speersj/.rbenv/plugins/ruby-build/bin
/Users/speersj/.rbenv/shims
/Users/speersj/.rbenv/bin
/Library/Frameworks/Python.framework/Versions/3.4/bin
在/ usr/local/bin目录
在/ usr/local/sbin中
在/ usr /本地/ Heroku的/ bin中
在/ usr/local/bin目录
在/ usr/bin中
/箱
/ usr/sbin目录
/ sbin目录
在/ usr/local/bin目录
在/ usr /本地/ smlnj /箱
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
Run Code Online (Sandbox Code Playgroud)
mat*_*att 19
spec.files您的条目gemspec不包含该mygem.rb文件,因此该文件在构建时不会存在于gem中.只有此条目中列出的文件才会包含在最终的gem中.
最简单的解决方案是添加mygem.rb到数组:
spec.files = ['lib/command.rb', 'lib/connection.rb', 'lib/mygem.rb']
Run Code Online (Sandbox Code Playgroud)
这是一个相当简单的修复,你可能想要做一些更灵活的事情,比如使用Dirglob:
spec.files = Dir['lib/**/*.rb']
Run Code Online (Sandbox Code Playgroud)
事实上,Rubygems指南建议你做这样的事情(文本来自该部分的结尾):
如果您已经为gem添加了更多文件,请务必记住在发布新gem之前将它们添加到gemspec的files数组中!出于这个原因(其中包括),许多开发人员使用Hoe,Jeweler,Rake,Bundler或仅仅是动态gemspec来实现自动化.
此外,您确实需要修复权限问题,您不需要sudo将gem安装到您自己的主目录中.
| 归档时间: |
|
| 查看次数: |
9080 次 |
| 最近记录: |