3

我正在寻找一种在 OS X 上部署独立 Ruby-Tk 桌面应用程序的简单方法。在 Mac 上部署桌面 Ruby GUI 应用程序的所有现有选项(例如standaloneify.rb)都假设您使用的是 RubyCocoa 或 MacRuby,并且是紧密绑定到 Xcode/Interface Builder 项目结构;或者,您正在通过 Platypus 包装一个不涉及部署整个 Ruby 运行时的简单脚本。我发现的其他现有选项——rubyscript2exe、ocra、crate——都不支持 Mac 和/或支持 Ruby 1.9。

我希望有人可以将我指向执行以下操作的 shell 脚本或 Ruby 脚本:

  1. 跟踪应用程序中的所有依赖项/宝石。
  2. 将 Ruby 解释器和依赖项复制到应用程序包中。
  3. 在 Ruby 解释器和所有 dylib 上运行 install_name_tool 以使其可移植。

应用程序包可以是 Platypus 创建的东西,使用 Cocoa 存根启动器,甚至是 shell 脚本——我知道如何处理这些。我遇到的问题是以可移植的方式包装 Ruby 运行时。

在http://weft-qda.rubyforge.org/svn/trunk/weft-qda/rake/rake_osx.rb有一个 rakefile,它包含了我想要完成的任务,但是这个 rakefile 是一个更大的构建的一部分我无法在我的 Mac 上运行的结构。我对 rakefile 结构不够熟悉,无法将其重构为一个可以通过“ruby rake_osx.rb”甚至“rake”运行的简单脚本。

如果有人可以向我建议如何修改这个 rakefile 以独立运行,或者将我指向另一个示例项目,甚至分享一些代码,我将不胜感激。我正在从事的项目比 Python 更适合 Ruby(Ruby 中更好的库支持),但如果部署不起作用,我不会在它上面投入时间。(Python 拥有比 Ruby 丰富得多的部署工具传统,这是我一直不太了解的。)

4

1 回答 1

0

事后这有点晚了,但是以经典的方式,因为我在 Mac 上找不到 Ruby-Tk 的桌面应用程序部署工具,所以我编写了自己的:

ruby2app

ruby2app 是一个简单的命令行工具,灵感来自于类似的 Mac 工具,如 Python 的 py2app,它将 Ruby 脚本与 Ruby 运行时捆绑到一个独立的 Mac 应用程序中。它读取一个基本配置文件以找到合适的 Ruby 安装,编译一个嵌入 Ruby 解释器的小型 C 程序,将整个 Ruby 安装复制到应用程序包中,并将相关库与主可执行文件重新链接。

它试图为 Mac 提供 ocra 和 exerb 为 Windows 提供的功能。希望这对其他人有用。

于 2014-12-06T05:56:41.810 回答