代码之家  ›  专栏  ›  技术社区  ›  Rayne

在Ruby项目中,/lib中的<appname>.rb文件通常用于什么?

  •  6
  • Rayne  · 技术社区  · 16 年前

    关于这个问题: Ideal ruby project structure

    我在Github上阅读了一些Rake源代码,我注意到他们的项目结构几乎相同。他们在/lib中有一个顶级的“rake.rb”文件,但我不确定它的用途。

    所以,我的问题是:在Ruby项目中,这个东西通常用于什么?

    如果这是一个愚蠢的问题,我很抱歉,但我对Ruby相对较新。我现在不太了解Ruby foo。 ;)

    谢谢。

    2 回复  |  直到 9 年前
        1
  •  5
  •   Emily    16 年前

    通常(当然在rake的例子中) appname.rb file是需要大量其他文件的快捷方式。如果你看看GitHub上Rake项目中的那个文件,它的大部分功能都是需要 lib/rake 目录,并根据需要包含模块。那个文件让你 require 'rake' 而不必知道rake需要哪些单个文件。

        2
  •  4
  •   Community Mohan Dere    9 年前

    Emily's answer :

    autoload 而不是a 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