gpt4 book ai didi

ruby - 需要在内部使用不同名称的 gem

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:48 25 4
gpt4 key购买 nike

我写了一个小 gem,我决定在内部使用与外部不同的名称,即我的 gem 的名称是 google-search,但文件结构是

google-search
|-lib
|-google
|-search
|-search.rb

使用 pry 加载我的代码我只是这样做

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'

我应该更改内部结构还是必须做其他事情?我真的很喜欢 require "google/search"这个想法,但如果我必须改变它也没关系。这是如何运作的?非常感谢。

最佳答案

require 'google/search' 对您的 gem 是正确的

false 的返回值意味着 Ruby 找到了您的 gem 库文件 google/search.rb已经 解析并加载了它。仅当库尚未加载时,它才会返回 true

引用:http://www.ruby-doc.org/core-2.1.1/Kernel.html#method-i-require

可能是 require 发现了一个冲突的文件——gem 搜索路径中与 google/search.rb 匹配的任何东西在理论上都可以被加载,gem 名称本身是不相关的,除了 .../gemname/lib 被添加到搜索路径中。正是这种 gem 相互声明文件名的潜力插入了约定,例如将您的主库文件命名为与 gem 相同,但只要一个合理地直接和/或唯一地从另一个派生,就应该可以使用不同的名字。

对于名为 google-search 的 gem,the advice on Rubygems表示用户应该期望按您的需要使用 require,因此您在这里遵循正常的 Ruby 约定。

关于ruby - 需要在内部使用不同名称的 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22485709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com