2

我创建了一个 gem,它公开了一个在 Linux 下工作的可执行文件。在 Windows 中,如果我导航到安装 gem 的目录,我可以从命令行运行它,但我必须-Ilib在调用ruby.

我想使用 Ocra 将可执行文件 + 依赖项(gem 的其余部分)+ Ruby 转换为其他用户的 exe 文件,但文档似乎说手动弄乱加载路径对 Ocra 来说是个坏主意。

我如何告诉 Ocra 使用 gem 的可执行脚本而不自己弄乱 Ruby 的加载路径?我想这将取决于我可以通过某种方式运行可执行脚本,该脚本利用它们是已安装 gem 的一部分并为我找出依赖关系这一事实。

4

1 回答 1

1

我的问题被证明需要一个两部分的答案:

  1. 关于 Rugbygems 如何在 Windows 中打包可执行文件的潜在无知:它将它们放在 ruby​​ 安装目录的 bin/ 目录中,该目录是在安装 Ruby 时添加到路径中的。脚本本身是不可执行的,但 Rubygems.bat为每个可执行文件创建了一个文件包装器,例如,用于从命令提示符的任何位置运行mygem.rb的随附文件。mygem.rb.bat

  2. 因此,可以使用以下命令运行 ocra 脚本:ocra path/to/Ruby/bin/mygem.rb.

请注意,如果您将某种服务器作为可执行文件的一部分启动,它可能会在您运行 ocra 时运行,并且永远不要继续创建可执行文件。因此有必要在启动服务器之前检查 ocra 是否正在运行:


if not defined? Ocra
  #do server startup stuff here
end

事实上,我最终创建了一个包含if not defined?代码的“安装程序”脚本,以免弄乱我可能想要用于其他目的的可执行脚本。

于 2012-08-14T08:25:35.447 回答