作者:一起回到我们的那个夏天 | 来源:互联网 | 2023-09-08 07:46
ImattemptingtobuildaRubygemusingtheinstructionsathttp:guides.rubygems.orgmake-your-ow
I'm attempting to build a Ruby gem using the instructions at http://guides.rubygems.org/make-your-own-gem/. The following seems to work fine and a *.gem file is generated.
我正在尝试使用http://guides.rubygems.org/make-your-own-gem/上的说明构建Ruby gem。以下似乎工作正常,并生成* .gem文件。
gem build mygem.gemspec
The following also appears to be successful (only if prefaced with sudo
):
以下似乎也是成功的(仅当以sudo开头):
sudo gem install mygem-0.0.1.gem
However, when I attempt to require 'mygem'
inside irb, I get the following error:
但是,当我尝试在irb中要求'mygem'时,我收到以下错误:
LoadError: cannot load such file -- mygem
I've seen similar errors around Stackoverflow but haven't been able to figure out what's going wrong in my specific situation. I am able to require other gems (not mine) without problems. My gem does show up in the output of gem list
but it will not load with require.
我在Stackoverflow上看到了类似的错误,但是在我的具体情况下无法弄清楚出了什么问题。我可以毫无问题地要求其他宝石(不是我的宝石)。我的gem确实显示在gem列表的输出中,但它不会加载require。
FWIW I am using rbenv, which is brand new to me.
FWIW我正在使用rbenv,这对我来说是全新的。
Here is the output of gem env
:
这是gem env的输出:
RUBYGEMS VERSION: 2.4.5
RUBYGEMS版本:2.4.5
RUBY VERSION: 2.1.5 (2014-11-13 patchlevel 273) [x86_64-darwin14.0]
RUBY VERSION:2.1.5(2014-11-13 patchlevel 273)[x86_64-darwin14.0]
INSTALLATION DIRECTORY: /Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.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
RUBY EXECUTABLE:/Users/speersj/.rbenv/versions/2.1.5/bin/ruby
EXECUTABLE DIRECTORY: /Users/speersj/.rbenv/versions/2.1.5/bin
可执行的目录:/Users/speersj/.rbenv/versions/2.1.5/bin
SPEC CACHE DIRECTORY: /Users/speersj/.gem/specs
SPEC CACHE目录:/Users/speersj/.gem/specs
SYSTEM CONFIGURATION DIRECTORY: /Users/speersj/.rbenv/versions/2.1.5/etc
SYSTEM CONFIGURATION目录:/Users/speersj/.rbenv/versions/2.1.5/etc
RUBYGEMS PLATFORMS:
RUBYGEMS PLATFORMS:
ruby
红宝石
x86_64-darwin-14
x86_64的-达尔文-14
GEM PATHS:
创业板路径:
/Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0
/Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0
/Users/speersj/.gem/ruby/2.1.0
/Users/speersj/.gem/ruby/2.1.0
GEM CONFIGURATION:
创业板配置:
:update_sources => true
:update_sources => true
:verbose => true
:verbose => true
:backtrace => false
:backtrace => false
:bulk_threshold => 1000
:bulk_threshold => 1000
REMOTE SOURCES:
远程来源:
- https://rubygems.org/
- https://rubygems.org/
SHELL PATH:
壳路径:
/Users/speersj/.rbenv/versions/2.1.5/bin
/Users/speersj/.rbenv/versions/2.1.5/bin
/Users/speersj/.rbenv/libexec
/Users/speersj/.rbenv/libexec
/Users/speersj/.rbenv/plugins/ruby-build/bin
/Users/speersj/.rbenv/plugins/ruby-build/bin
/Users/speersj/.rbenv/shims
/Users/speersj/.rbenv/shims
/Users/speersj/.rbenv/bin
/Users/speersj/.rbenv/bin
/Library/Frameworks/Python.framework/Versions/3.4/bin
/Library/Frameworks/Python.framework/Versions/3.4/bin
/usr/local/bin
在/ usr / local / bin目录
/usr/local/sbin
在/ usr / local / sbin中
/usr/local/heroku/bin
在/ usr /本地/ Heroku的/ bin中
/usr/local/bin
在/ usr / local / bin目录
/usr/bin
在/ usr / bin中
/bin
/箱
/usr/sbin
/ usr / sbin目录
/sbin
/ sbin目录
/usr/local/bin
在/ usr / local / bin目录
/usr/local/smlnj/bin
在/ usr /本地/ smlnj /箱
Gemspec:
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
3 个解决方案
14
The spec.files
entry of your gemspec
doesn’t include the mygem.rb
file, so that file won‘t be in the gem when it is built. Only files listed in this entry will be included in the final gem.
gemspec的spec.files条目不包含mygem.rb文件,因此该文件在构建时不会出现在gem中。只有此条目中列出的文件才会包含在最终的gem中。
The simplest solution would be to just add mygem.rb
to the array:
最简单的解决方案是将mygem.rb添加到数组中:
spec.files = ['lib/command.rb', 'lib/connection.rb', 'lib/mygem.rb']
This is a fairly simple fix, you might want to do something more flexible like using a Dir
glob:
这是一个相当简单的修复,你可能想要做一些更灵活的事情,比如使用Dir glob:
spec.files = Dir['lib/**/*.rb']
In fact the Rubygems guide suggests you do something like this (text is from the end of that section):
事实上,Rubygems指南建议你做这样的事情(文本来自该部分的结尾):
If you’ve added more files to your gem, make sure to remember to add them to your gemspec’s files array before publishing a new gem! For this reason (among others), many developers automate this with Hoe, Jeweler, Rake, Bundler, or just a dynamic gemspec.
如果您已经为gem添加了更多文件,请务必记住在发布新gem之前将它们添加到gemspec的files数组中!出于这个原因(其中包括),许多开发人员使用Hoe,Jeweler,Rake,Bundler或仅仅是动态gemspec自动化。
Also, you really do need to fix your permissions problem, you shouldn’t need sudo
to install gems into your own home directory.
此外,您确实需要修复权限问题,您不需要sudo将gem安装到您自己的主目录中。