我创建了一个gem,它公开了一个在Linux下运行的可执行文件。在Windows中,如果我导航到安装gem的目录,我可以从命令行运行它,但是我必须在调用-Ilib
时自己指定ruby
。
我想使用Ocra将可执行文件+依赖项(gem的其余部分)+ Ruby转换为其他用户的exe文件,但文档似乎是说使用Ocra手动搞乱加载路径是一个坏主意。
如何告诉Ocra使用gem的可执行脚本而不会自己搞乱Ruby的加载路径?我想这将取决于我可以运行可执行脚本的一些方式,利用它们是已安装的gem的一部分,并为我找出依赖关系。
答案 0 :(得分:1)
我的问题证明需要两部分答案:
关于Rugbygems如何在Windows中打包可执行文件的潜在无知:它将它们放在ruby安装目录中的bin /目录中,该目录在安装Ruby时被添加到路径中。脚本本身不可执行,但Rubygems为每个可执行文件创建.bat
文件包装器,例如for mygem.rb
一个随附的mygem.rb.bat
文件,它将从命令提示符的任何位置运行。
因此可以使用以下代码运行ocra脚本:ocra path/to/Ruby/bin/mygem.rb
。
请注意,如果您启动某种服务器作为可执行文件的一部分,它可能会在您运行ocra时运行,并且永远不会继续创建可执行文件。因此,在启动服务器之前检查ocra是否正在运行是必要的:
if not defined? Ocra
#do server startup stuff here
end
事实上,我最终创建了一个带有if not defined?
代码的“安装程序”脚本,以免弄乱我可能需要用于其他目的的可执行脚本。