(Ruby)为Windows编译动态应用程序?

(Ruby)为Windows编译动态应用程序?,windows,ruby,email,smtp,compilation,Windows,Ruby,Email,Smtp,Compilation,有人对为Windows编译Ruby代码有什么见解吗?我试过“Ruby2Exe”和“OCRA”,但都有各自的问题。Ruby2Exe不断显示模糊或混乱的警告,如“无法修改冻结字符串”。另一方面,OCRA似乎希望运行脚本,并假设没有动态项 作为记录,我的脚本接受命令行参数以及读取和解析文本文件。OCRA根本不喜欢这个方面,实际上在我的代码中抛出警告,就像我试图运行脚本一样 不管怎样,如果有人有任何高质量的方法来为Windows编译ruby代码,我洗耳恭听 仅供参考,我使用这个脚本的目标是通过SMTP发

有人对为Windows编译Ruby代码有什么见解吗?我试过“Ruby2Exe”和“OCRA”,但都有各自的问题。Ruby2Exe不断显示模糊或混乱的警告,如“无法修改冻结字符串”。另一方面,OCRA似乎希望运行脚本,并假设没有动态项

作为记录,我的脚本接受命令行参数以及读取和解析文本文件。OCRA根本不喜欢这个方面,实际上在我的代码中抛出警告,就像我试图运行脚本一样

不管怎样,如果有人有任何高质量的方法来为Windows编译ruby代码,我洗耳恭听

仅供参考,我使用这个脚本的目标是通过SMTP发送电子邮件。它是大型非ruby应用程序的一部分,但框架无法发送电子邮件。我觉得Ruby很有趣,也很容易使用,但我不希望让每个最终用户都安装Ruby——因此,需要/渴望“编译”它

我在一个很短的时间表上,不能花费资源来在C++中写这个。但是,如果任何人对任何现有的Windows兼容的应用程序都有任何见解,请告诉我们。 非常感谢。

“另一方面,OCRA似乎想运行您的脚本…”

常量Ocra是在编译时定义的,但不是在运行时定义的。因此,您可以根据是否定义了Ocra常量来包含逻辑。例如:

   app = MyApp.new
   if not defined?(Ocra)
     app.main_loop
   end

请原谅我,但似乎你已经开始思考了。我没有看过OCRA代码。我只是用它来编译。你介意把那句话再详细解释一下吗?很抱歉给你带来困惑。Ocra必须加载您的脚本,以确定要在可执行文件中包含哪些文件(包括所需的gem)。我假设您的问题之一是关于如何避免Ocra执行您的整个脚本。引用Ocra开发人员的话,“您可以通过查找'Ocra'常量来检测Ocra当前是否正在构建您的脚本。如果定义了该常量,则Ocra当前正在从您的脚本构建可执行文件。例如,您可以使用它来避免在编译可执行文件时打开GUI窗口。”好的,仍然感到困惑,但没有那么困惑。那么,我是将代码放在OCRA文件中还是放在我的“.rb”文件中呢?您可以将类似这样的内容添加到ruby脚本(“.rb文件”)中。如果您愿意,请随时通过电子邮件(firstname.lastname在gmail.com)向我发送您的代码(或通用版本),我可以提供具体建议。非常感谢。发送。我期待着您的意见。您是否可以假设Java已经安装,或者将其作为先决条件?