gpt4 book ai didi

ruby-on-rails - Ruby : multiple files, 一 "require"子句

转载 作者:行者123 更新时间:2023-12-04 16:51:27 24 4
gpt4 key购买 nike

我将几个类封装到一个模块中,为它们创建命名空间,存储在一个文件中 my_namespace.rb .

module MyNamespace
class Class1
end

class Class2
end

class Class3
end

class Class4
end

class Class5
end
end

该模块由一个子句插入:
require 'my_namespace'

这个模块现在很臃肿,所以我想把命名空间分成几个 *.rb lib 中的文件文件夹 - 每个类一个文件,但恐怕需要使用多个 require条款 - 每类一个。如何养一只 require条款? (或者更准确地说:需要、包含或任何允许我使用我的类的东西)

最佳答案

您可以通过首先查看文件夹在加载时生成您的 require 调用。例如

Dir[File.join(Rails.root, "path/to/directory/*.rb")].each {|file| require file }

因此,如果您的所有文件都在“/path/to/directory”文件夹中,则它们都将被需要。

有些人喜欢从要求的末尾删除“.rb”部分,在这种情况下你会这样做
Dir[File.join(Rails.root, "path/to/directory/*.rb")].each {|file| require file.gsub(/\.rb$/,"") }

编辑 - 更新了 rails 项目文件夹中的路径,因为它们可能会在某个地方。在上面的例子中,我假设它们在 <your project folder>/path/to/directory

使用继承时,这种方法存在潜在风险,因为文件的列出顺序可能与继承要求的顺序不同。即使您设法命名文件以便在 Windows 中进行继承,Linux 也可能以不同的顺序对文件进行排序,这将破坏您的所有努力。在这种情况下,建议使用文件名数组。

关于ruby-on-rails - Ruby : multiple files, 一 "require"子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739772/

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