我写了一个小gem,决定在内部使用与外部不同的名称,即我的gem的名称是google-search,但是文件结构是
google-search
|-lib
|-google
|-search
|-search.rb
使用撬来加载我的代码
bundle exec pry -r ./lib/google/search
从google-search目录内部。
现在,我已经将新的gem包含在我的项目中,并且尝试使用它,但是由于某些原因,我无法做到这一点。
我试过了:
[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 /搜索”的想法,但是可以更改它。这是如何运作的?非常感谢。
require 'google/search'
对你的宝石是正确的
返回值false
表示Ruby找到了您的gem库文件,google/search.rb
但已经对其进行了解析和加载。true
仅当尚未加载库时才返回。
参考:http : //www.ruby-doc.org/core-2.1.1/Kernel.html#method-i-require
需求可能找到了一个冲突的文件-google/search.rb
理论上可以在gem搜索路径匹配中加载任何内容,gem名称本身除了.../gemname/lib
添加到搜索路径之外不相关。gem相互之间可能会要求文件名,这有可能推动惯例,例如与gem相同地命名主库文件,但是只要一个合理地直接和/或唯一地从另一个派生,就可以使用不同的名字。
对于名为的gem google-search
,关于Rubygems的建议说,用户应该期望根据需要使用require,因此您在此处遵循常规的Ruby约定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句