为什么有些 Ruby 项目有一个只有"require"语句的文件



我正在查看不同的Ruby客户端实现,有时我会发现像这样的文件:

require 'addressable/uri'
require 'twitter/configuration'
require 'twitter/cursor'
require 'twitter/direct_message'
require 'twitter/entity'
require 'twitter/entity/hashtag'
# ... Snipped for brevity; there's 31 lines like this.

只做require其他文件。为什么要这样做?

它只是一个调用其他需求的包装器,因此一个用户脚本不会需要所有依赖项。有时,包更喜欢将其函数划分到不同的文件中,而不是将所有代码放在一个文件中。它也更容易进行更改和跟踪错误。将更改提交到存储库也可以更轻松。

Ruby Gems和库经常合并Require语句

这是Ruby库文件中相当常见的习惯用法。例如,考虑下面这个由绑定器gem命令创建的模板:

$ bundler gem foo
$ cat foo/lib/foo.rb
require "foo/version"
module Foo
  # Your code goes here...
end

打包器模板期望您用各种require语句填充这个文件,以便从foo/lib/foo/目录中拉入代码。例如:

require "foo/version"
module Foo
  require 'foo/bar' # pull in lib/foo/bar.rb
  require 'foo/baz' # pull in lib/foo/baz.rb
end

可以将100%的代码放入lib/foo中。Rb 如果你喜欢的话。然而,将文件拆分以使每个文件集中于单独的关注点通常被认为是一种良好的编程实践,并且主库文件是合并大量Kernel#require语句的非常方便的地方。

最新更新