我做了一些研究,没有什么能解决我的问题...
我正在构建一个gem,所以我有一个像这样的目录结构
root/ - lib/ - mygem/ - cli.rb
- version.rb
- xmltemplates.rb
- mygem.rb
- bin/
这是一个thor
个应用,所以cli.rb
我有:
require 'thor'
require 'mygem/version'
require 'mygem/xmltemplates'
module MyGem
#STUFF
end
在vesrion.rb
:
module MyGem
VERSION = '0.1.0'
end
和xmltemplates.rb
:
module MyGem
MY_TEMPLATE = 'TEST'
end
我在尝试使用gem编译时遇到错误,所以我决定在irb中使用它。
因此,对于这个测试,我做了cd lib
使自己成为lib目录的本地。
1.9.3-p392 :001 > require 'rubygems'
=> false
1.9.3-p392 :003 > require 'mygem'
=> true
1.9.3-p392 :005 > require 'mygem/cli'
LoadError: cannot load such file -- mygem/xmltemplates
from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/user/.rvm/gems/ruby-1.9.3-p392/gems/mygem-0.1.0/lib/mygem/cli.rb:3:in `<top (required)>'
from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from (irb):5
from /Users/user/.rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>'
1.9.3-p392 :007 > require 'mygem/xmltemplates'
LoadError: cannot load such file -- mygem/xmltemplates
from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from (irb):7
from /Users/user/.rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>'
1.9.3-p392 :009 > require 'mygem/version'
=> true
1.9.3-p392 :010 > MyGem::VERSION
=> "0.1.0"
因此可归结为:mygem/version
是否会加载查找,而mygem.xmltemplates
不会?我已经检查了文件的权限,它们都是完全相同的。
我之前阅读过的一些帖子提到require_relative
,但这对我不起作用,似乎就是这样我就无法加载cli.rb
或{ {1}}。
答案 0 :(得分:0)
使用宝石时,您的.gemspec
文件是最新的非常重要。 gem loader使用它来查找文件。也许您还没有将xmltemplates
添加到该规范中?
如果您正在尝试诊断加载问题,请务必检查$LOAD_PATH
以确保您的lib/
在那里。如果不是,则由于缺少文件,您将获得LoadError
类型例外。