参考这个问题:Ideal ruby project structure我注意到appname.rb在lib中,并且是顶级的。
我正在阅读Github上的一些Rake源代码,我注意到他们的项目结构几乎相同。他们在/ lib中有一个顶级的“rake.rb”文件,但我不确定它的用途。
在Pickaxe(Ruby 1.9编程)中,他们展示了一个构建一个小项目的例子,上面的目录结构几乎相同,但没有提到在/ lib中使用顶级.rb。 / p>
所以,我的问题是:这个东西在Ruby项目中通常用于什么?
很抱歉,如果这是一个愚蠢的问题,我确信它是,但我对Ruby相对较新。我现在不太了解Ruby-foo。 ;)
感谢。
答案 0 :(得分:5)
通常(当然在rake的例子中)appname.rb
文件是需要许多其他文件的快捷方式。如果您在GitHub上的Rake项目中查看该文件,它所做的大部分工作都需要lib/rake
目录中的文件,并根据需要包含模块。该文件让您require 'rake'
无需知道单个文件需要什么。
答案 1 :(得分:4)
某些项目在该文件中执行autoload
而不是require
。后者实际上会加载所有类,而前者只是告诉类加载系统如果在没有自己的require
语句的情况下引用它们,如何找到它们。
所以模式看起来像:
# in foo_project/lib/foo.rb:
module Foo
autoload :Bar, 'foo/bar'
autoload :Baz, 'foo/baz'
end
# in foo_project/lib/foo/bar.rb:
module Foo
class Bar
...
end
# in foo_project/lib/foo/baz.rb:
module Foo
class Baz
...
end
然后,在您的项目中,您可以执行以下操作:
require 'foo'
# note: no require 'foo/bar' or 'foo/baz'
my_bar = Foo::Bar.new