gpt4 book ai didi

ruby-on-rails - 需要在应用程序中要求 gem,即使 gemspec 将其添加为运行时依赖项?

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:52 26 4
gpt4 key购买 nike

我有一个 gem 说在 gem 中使用了 'A' 并且 gemspec 文件添加了一个运行时依赖性说

s.add_dependency 'A', '~> 1.0'

当我运行我的应用程序时,我收到一条错误消息,指出在 gem 中找不到某些文件/类。当我将 gem 包含在应用程序 Gemfile 中时,此错误消失。

为什么我需要在应用程序中包含 gem,尽管它是运行时依赖项?

最佳答案

这就是 gem 依赖项的工作原理。当您添加依赖项时,它不会自动要求依赖的 gem(事实上它不能,因为无法知道需要的文件名——并非所有的 gem 都与它们的主文件同名)。

向 gem 添加依赖项有两个作用。首先,当您安装 gem 时,依赖的 gem 也会自动安装。

其次,当 gem 被激活时(这通常发生在您require 来自它的文件时,但可以通过 gem 显式完成)gem 的 lib 目录被添加到加载路径,任何依赖项的 lib 目录也是如此。这确保当主 gem 对这些依赖项调用 require 时,将使用正确的版本。

主 gem 仍然需要对其依赖项调用 require。一般而言,Rubygems 无法知道应该需要来自 gem 的哪个文件,或者何时(甚至是否)应该发生。例如,可能仅在某些情况下需要依赖项,因此您希望避免调用 require(这会减慢您的速度),除非您确实需要所提供的功能。

关于ruby-on-rails - 需要在应用程序中要求 gem,即使 gemspec 将其添加为运行时依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24842080/

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