【发布时间】:2016-07-01 19:53:22
【问题描述】:
我正在制作宝石,我想在 irb 上对其进行测试。
我运行gem build gemname.gemspec,然后成功运行gem install ./gemname-0.0.0.gem。 gem 名称出现在本地 gem 下的 gem list。
当我在 irb 并需要 'gemname' 时,它会显示
LoadError: cannot load such file -- gemname
from /Users/iggy/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/iggy/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from (irb):1
from /Users/iggy/.rvm/rubies/ruby-2.2.1/bin/irb:11:in `<main>'
我查看了this post、this one、this one 等人的答案。仍然收到LoadError。
我的 gem 环境:
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.6
- RUBY VERSION: 2.2.1 (2015-02-26 patchlevel 85) [x86_64-darwin14]
- INSTALLATION DIRECTORY: /Users/iggy/.rvm/gems/ruby-2.2.1
- RUBY EXECUTABLE: /Users/iggy/.rvm/rubies/ruby-2.2.1/bin/ruby
- EXECUTABLE DIRECTORY: /Users/iggy/.rvm/gems/ruby-2.2.1/bin
- SPEC CACHE DIRECTORY: /Users/iggy/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-14
- GEM PATHS:
- /Users/iggy/.rvm/gems/ruby-2.2.1
- /Users/iggy/.rvm/gems/ruby-2.2.1@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/iggy/.rvm/gems/ruby-2.2.1/bin
- /Users/iggy/.rvm/gems/ruby-2.2.1@global/bin
- /Users/iggy/.rvm/rubies/ruby-2.2.1/bin
- /Users/iggy/.rvm/bin
- /Users/iggy/.nvm/v0.10.36/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
更多信息:
Igors-MacBook-Air:gemname iggy$ which ruby
/Users/iggy/.rvm/rubies/ruby-2.2.1/bin/ruby
确保只有一个 ruby 正在运行(有两个版本,但我将其更改为如下所示)
Igors-MacBook-Air:gemname iggy$ which -a ruby
/Users/iggy/.rvm/rubies/ruby-2.2.1/bin/ruby
当前的红宝石版本
Igors-MacBook-gemname iggy$ ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
不确定此命令的作用,但我之前看到的一篇文章建议运行此命令:
Igors-MacBook-Air:gemname iggy$ gem env | grep 'RUBY EXECUTABLE'
- RUBY EXECUTABLE: /Users/iggy/.rvm/rubies/ruby-2.2.1/bin/ruby
任何帮助摆脱 require 'gemname' 的 loadError 将不胜感激。
【问题讨论】:
-
尝试
require 'rubygems',然后要求出现错误的gem。 -
请注意,在您的 gem 名称中加上大写
N会让人们发疯。约定仅为小写。无视这条规则的包裹是不规则的。你有gemName.rb文件吗? -
@13aal 我这样做了,它返回 false。好像它已经加载了。当我需要“gemname”时,它会返回错误。我会换骆驼包。我确实在名为 lib 的文件夹中有 gemname.rb。 gem 遵循 guides.rubygems.org/make-your-own-gem 的约定(不完全相同)- 它至少有 gemname.gemspec、lib 文件夹和 gemname.rb