Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 有没有一种方法可以构建不需要依赖项的CLI?_Ruby_Command Line Interface - Fatal编程技术网

Ruby 有没有一种方法可以构建不需要依赖项的CLI?

Ruby 有没有一种方法可以构建不需要依赖项的CLI?,ruby,command-line-interface,Ruby,Command Line Interface,最近,我想用Ruby搭建一个小CLI,但担心在没有安装Ruby的机器上使用它。我搜索了一些流行CLI的示例,发现它是用构建的。我可以在未安装Go的情况下在计算机上使用此CLI。如何构建一个不需要您安装Ruby的工具 我的猜测是,这涉及到一个构建过程,它可能被编译成大多数系统上都有的东西,比如shell或smth。抱歉,如果这是一个蹩脚的猜测/问题 (注意:这不是一个详细的答案,只是对其工作原理的总结) Cli程序与其他程序一样,没有什么特别之处 Go是一种编译语言——一种称为“编译器”的程序根据

最近,我想用Ruby搭建一个小CLI,但担心在没有安装Ruby的机器上使用它。我搜索了一些流行CLI的示例,发现它是用构建的。我可以在未安装Go的情况下在计算机上使用此CLI。如何构建一个不需要您安装Ruby的工具

我的猜测是,这涉及到一个构建过程,它可能被编译成大多数系统上都有的东西,比如shell或smth。抱歉,如果这是一个蹩脚的猜测/问题

(注意:这不是一个详细的答案,只是对其工作原理的总结) Cli程序与其他程序一样,没有什么特别之处

Go是一种编译语言——一种称为“编译器”的程序根据操作系统强加的约定,将Go代码直接翻译成机器语言。它变成了纯0和1,没有任何其他引用。它的主要优点是它是自包含的,但您必须在每种不同的体系结构(32位、arm处理器等)和操作系统(windows、linux、macos)上重新编译它—操作系统负责在cli上重定向输入和输出

相反,Ruby是被解释的。有一个名为“Ruby解释器”的程序,它可以动态地将您的代码翻译成适当的机器代码。这是一种不同的方法,更“高层次”。
优点是不需要重新编译代码。但是,“Ruby解释器”本身必须用某种编译语言编写。

查看此项目嘿@Yakov,谢谢你的链接!这正是我需要的。这解决了问题,但我仍然好奇这在引擎盖下是如何工作的。希望从现在起,我能够自己探索它,或者有人会在这个问题下解释打包背后的内部工作:)它只是创建了一个文件,将您的代码和ruby解释器的副本放在一起,所以您在项目中提供了ruby的副本:)您必须安装ruby才能运行ruby脚本。Ruby是一种解释语言,不是编译语言。在机器上的某个地方,你必须有一个Ruby。这个词对解释器来说是正确的,但更确切地说,它不翻译,解释器中有每个程序,解释器是在机器上实际运行的程序,我们的程序将成为解释器程序的输入。