gpt4 book ai didi

ruby - 将许多 ruby​​ 源文件组合成一个文件

转载 作者:数据小太阳 更新时间:2023-10-29 08:03:42 25 4
gpt4 key购买 nike

我正在用 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 文件中,只需将它放在正确的位置即可安装。任何帮助都会很棒,谢谢!

最佳答案

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

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

关于ruby - 将许多 ruby​​ 源文件组合成一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com