我写了一个小创业板,我决定在内部使用一个与外部不同的名称,即我的创业板的名称是google-search,但是文件结构是
google-search
|-lib
|-google
|-search
|-search.rb
要使用pry加载代码,我只需执行以下操作
bundle exec pry -r ./lib/google/search
在谷歌搜索目录里。
我现在已经将我的新创业板包括在我的项目中,我试图要求和使用它,但由于某些原因,我无法做到。
我试过:
[1] pry(main)> require 'google/search'
=> false
[2] pry(main)> require 'google'
LoadError: cannot load such file -- google
from (pry):7:in `require'
[3] pry(main)> require 'google-search'
LoadError: cannot load such file -- google-search
from (pry):8:in `require'
我应该改变内部结构还是必须做其他的事情?我真的很喜欢要求"google/search“的想法,但是如果我必须改变它,那也没关系。这是怎么回事?非常感谢。
发布于 2014-03-18 16:54:45
require 'google/search'
对你的宝石是正确的
false
的返回值意味着google/search.rb
找到了您的创业板库文件google/search.rb
,但是已经解析并加载了它。只有当库尚未加载时,它才会返回true
。
参考资料:http://www.ruby-doc.org/core-2.1.1/Kernel.html#method-i-require
有可能需求找到了一个冲突的文件--在与google/search.rb
匹配的创业板搜索路径中的任何内容,理论上都可以加载,除了将.../gemname/lib
添加到搜索路径之外,创业板名称本身并不相关。gem有可能相互声明文件名,这就驱动了一些约定,比如将主库文件命名为gem,但是只要其中一个合理地直接和/或唯一地从另一个派生,使用不同的名称应该是可以的。
对于一个名为google-search
的gem,关于Rubygems的建议说用户应该期望使用您想要的需求,所以您在这里遵循常规的Ruby约定。
https://stackoverflow.com/questions/22485709
复制相似问题