gpt4 book ai didi

ruby-on-rails - 为什么某些 Ruby 常量(类、模块)应该在 Rails 中明确要求?

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

ruby 中似乎有两种类型的类,一种我不需要要求它们始终可访问(如 Float、Array、Hash 等)。它们是 ruby​​ 的一部分,这是意料之中的。

但也有一些常量是不可访问的,除非明确要求(如 REXMLObservableYAML )。它们也是 Ruby 的一部分,我希望能够在不需要的情况下访问它们。

为什么这些常量在没有要求的情况下不可用?

在 Rails 指南中,不建议明确要求任何内容,因为这会扰乱 Rails 自动加载机制。如果无论如何都需要这些常量,那么最好的方法是什么?

我应该使用require 还是require_dependency

我应该在使用常量的文件顶部使用 require 还是应该以某种方式在全局范围内使用它?

编辑:此外,由于常量可用性取决于加载顺序,因此很容易忘记需要一些文件,并且在加载顺序以某种方式发生变化之前它不会中断。除了对您使用的每个常量格外警惕之外,避免遇到此类错误的最佳方法是什么?

最佳答案

“内置”的东西有两种。

  1. ruby 核心。这些东西你不需要。它们是语言本身的一部分。数组、哈希等
  2. 标准库 (stdlib)。 Struct、OpenStruct、Time 的附加功能等。它们对语言来说不是必需的。只是您可以使用的功能。如果您不在程序中使用 REXML,则不需要加载它(这会浪费 CPU 时间和内存)。因此,您必须在使用它们之前要求这些东西。

If these constants need to be required anyway, what is the best way to do it?

如果您不对它们进行 monkeypatch,那么您只需继续并在任何需要的地方使用它们。我通常在使用它们的文件顶部执行此操作。

如果你对它们进行 monkeypatch,我建议你重新考虑。 :)

关于ruby-on-rails - 为什么某些 Ruby 常量(类、模块)应该在 Rails 中明确要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39594921/

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