我将几个类包装到一个模块中,为它们创建名称空间,存储在一个文件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
文件中拆分命名空间 - 每个类一个文件,但我担心它需要使用多个{{ 1}}条款 - 每个班级一个。如何保留一个require
条款? (或者更确切地说:要求,包括或允许我使用我的课程的任何东西)
答案 0 :(得分:2)
您可以首先查看文件夹,在加载时生成您的必需来电。例如
Dir[File.join(Rails.root, "path/to/directory/*.rb")].each {|file| require file }
所以,如果你的所有文件都在" / path / to /目录"文件夹他们都需要。
有些人赞成放弃" .rb"部分来自require的结尾,在这种情况下你会做
Dir[File.join(Rails.root, "path/to/directory/*.rb")].each {|file| require file.gsub(/\.rb$/,"") }
编辑 - 更新了rails项目文件夹中的路径,因为它们可能会在某处。在上面的例子中,我假设它们在<your project folder>/path/to/directory
使用继承时,此方法存在潜在风险,因为列出的文件的顺序可能与继承所需的顺序不同。即使你设法命名文件以便继承在Windows中工作,Linux也可能以不同的顺序对文件进行排序,这将破坏你所有的努力。在这种情况下,建议使用文件名数组。