Ruby的要求没有找到的所有文件
问题描述:
我做了一些研究,并没有对我的问题很打...Ruby的要求没有找到的所有文件
我建立一个宝石,所以我有这样的
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
试图与作为宝石,所以我决定在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
或version.rb
。
答
使用宝石时,最重要的是您的.gemspec
文件是最新的。宝石加载器使用它来查找文件。也许你还没有将xmltemplates
添加到该规范呢?
如果你试图诊断负载问题,经常检查$LOAD_PATH
,以确保您的lib/
就在那里。如果不是,由于丢失文件,您将得到LoadError
类型的异常。
我gemspec显示: 's.require_paths = [ 'LIB']' 你是在给它虽然! 刚刚意识到我也有这个:'s.files ='git ls-files'.split(“\ n”)''。这是一份复制粘贴工作,所以我不认为要改变它。我想我必须'git add'才能工作。感谢您的正确方向! – IamTheFij 2013-05-09 18:51:55
就是这样。如果清单中没有列出某些内容,则不会捆绑安装。 – tadman 2013-05-09 19:23:27