创建具有相同名称可执行文件的Ruby宝石



我想要一个Ruby Gem,它将具有与另一个Gem相同的可执行文件。

当使用command args调用时,它将执行某些操作,或者将命令传递给另一个Gem。

我遇到的第一个问题是,它无法运行两个名称相同的可执行文件。我得到这个错误:

Bundler使用的是为另一个gem创建的binstub。这是不推荐的,在未来的版本中,您可能需要bundle binstub yourgem来解决系统/捆绑包冲突。

如何让Gems具有相同名称的可执行文件并确保目标Gems执行?

您不能依赖Bundler或Rubygems来管理它。它所做的一切都是将您在gem规范中指定的可执行文件复制到其bin/目录中。

你会遇到的第一个问题是,运行的可执行文件可能取决于gem的安装顺序,而你无法保证。

您将遇到的另一个问题是,您无法在安装gem时执行代码,因此您将无法运行尝试为安装您的gem的人自动进行此设置的代码。

我认为您的gem应该提供一个不冲突的可执行文件。然后,您可以在gem规范中提供安装后的说明,这些说明会显示给安装gem的用户、README、博客文章等。您可以告诉用户,他们需要设置一个指向可执行文件的别名。在我所知道的所有shell中,别名都将在文件系统可执行文件之前执行。

当人们想要绕过你的别名并执行原始可执行文件时,你可以告诉人们逃离命令,例如original-gem。这绕过了大多数shell中的别名和函数查找,并允许用户将您的超级棒的版本作为默认版本(通过别名),并可以轻松访问原始版本。

最新更新