【发布时间】:2020-11-06 09:05:46
【问题描述】:
基本上是否可以将 gems 用作可执行文件的通用包管理器而完全忽略 ruby?
假设我创建了一个批处理脚本和一个 bash 脚本,它们可以做一些神秘的事情,而这在 Ruby 中是不可能做到的。
是否可以将它们打包到 gem 中并允许用户使用gem install 安装它们?
主要问题是,虽然 gemspec 允许我提供可执行文件列表,但它假定它们是 ruby 脚本。因此gem install 创建了一些特定于平台的包装器,这些包装器归结为
$ ruby file-which-is-listed-as-executable-in-gemspec
这显然不适用于我的批处理和 bash 脚本。
我不能只创建一个 ruby 可执行文件来执行这些脚本的原因是我会丢失当前环境。批处理文件设置执行后需要保留的环境变量,并且应该使用 source 调用 bash 脚本,因此它导出的变量仍然存在。使用 ruby 调用其中任何一个都将撤消所有环境变量更改,因为它们只会发生在 ruby 的进程环境中。
我完全考虑 gem 的原因是这些脚本最终确实调用了 ruby 可执行文件,而这本质上是一个 ruby gem。我想提供环境设置助手。
【问题讨论】:
标签: rubygems