我正在使用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
文件中,只需将其放在正确的位置即可安装。任何帮助都会很棒,谢谢!
答案 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
个语句,但由于它们是幂等的,因此不会产生任何负面影响。