将多个 ruby 个源文件组合成一个文件

Combine many ruby source files into a single file

我正在 ruby 中从事一个项目,我有许多源文件,每个源文件都在一个模块中声明了一些 类 和方法。我一直在四处寻找,可能只是遗漏了一些东西,但我似乎找不到将所有源文件合并到一个文件中的方法。我想要一个文件,因为这里的最终产品是一个命令行工具,用户不想安装 20 个文件来 运行 一个命令。

有什么方法可以获取多个 ruby 源文件并提前处理所有 require 语句来创建一个单独的文件,该文件本身可以 运行 作为独立程序?

一些可能有用(或有害?)的东西:

示例(我项目中的一些文件):

<filename> --> <include1>
               <include2> 
               ...

build.rb [the main file] --> BuildSystem.rb
                             Utilities.rb
BuildSystem.rb           --> Project.rb
                             YamlFile.rb
                             XmlFile.rb
                             Utilities.rb
Project.rb               --> YamlFile.rb
                             XmlFile.rb
                             Utilities.rb

我正在寻找的是可以让我将所有 5 个文件合并到一个 build 文件中的东西,只需将其放在正确的位置即可安装。任何帮助都会很棒,谢谢!

The only file with code that is not within a function is the main file. Therefore, only the main file will have code that is run immediately after the file is parsed.

因此,您可以简单地从 shell 运行 执行以下操作(假设 OS X / *nix 系统):

touch main.rb
cat Utilities.rb >> main.rb
cat XmlFile.rb >> main.rb
cat YamlFile.rb >> main.rb
cat Project.rb >> main.rb
cat BuildSystem.rb >> main.rb
cat build.rb >> main.rb #  must be appended last

您可以将其放入 shell 脚本中,以便在每次进行更改时 "build" 您的输出文件。

使用此方法,您将在整个输出 main.rb 文件中散布 require 语句,但由于它们是幂等的,因此不会产生任何负面影响。