将许多ruby源文件合并到一个文件中

时间:2015-05-14 01:31:52

标签: ruby build building

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

有没有办法获取许多ruby源文件并提前处理所有require语句来创建一个可以作为独立程序自行运行的文件?

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

  • 代码不在函数内的唯一文件是主文件。因此,只有主文件才会包含在解析文件后立即运行的代码。
  • require所有需要的文件立即在每个文件的开头(在初始评论之后),因此require语句都在文件的顶部,并且所有依赖项列在每个文件的开头
  • 我会针对每个文件所需的所有文件调用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文件中,只需将其放在正确的位置即可安装。任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:2)

  

代码不在函数内的唯一文件是主文件。因此,只有主文件才会包含在解析文件后立即运行的代码。

因此,您可以从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脚本中,以便在每次进行更改时“构建”输出文件。

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