【问题标题】:Ocra and scripts marked as executable in Rubygems gemspec在 Rubygems gemspec 中标记为可执行的 Ocra 和脚本
【发布时间】:2012-08-10 15:44:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby windows rubygems load-path ocra


    【解决方案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? 代码,以免弄乱我可能想要用于其他目的的可执行脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多