首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用不同的名称从命令行调用ruby gem

使用不同的名称从命令行调用ruby gem
EN

Stack Overflow用户
提问于 2013-04-26 15:22:05
回答 2查看 516关注 0票数 3

有没有办法更改用户在从命令行调用时必须使用的名称?例如,我有一个名为super_awesome_gem的雷神命令行应用程序。我希望我的gem名为super_awesome_gem,但是当用户从命令行调用它时,我只希望他们能够调用sup_awe或其他什么。

我尝试过编辑gemspec文件以及文件名和文件夹名,但我不知道正确的方法是什么,或者是否有这样的方法。

有没有办法以一种方式命名gem,并让命令行调用使用不同的名称?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-26 21:37:10

您的gem名称和它捆绑的可执行文件根本不必相同。在gemspec中,您可以通过executables定义可执行文件列表

代码语言:javascript
运行
复制
Gem::Specification.new do |s|
  s.name = "super_awesome_gem"
  # other gemspec stuff
  s.executables = ["sup_awe"]
end

只要sup_awe在gemspec的files列表中列出,并且是可执行的,那么在用户安装gem之后,它将位于用户的路径中。Bundler在引导您的gemspec时,使这一过程变得更加简单

代码语言:javascript
运行
复制
s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }

bin/中的任何内容都将被视为可执行文件。

这就是说,您的可执行/bin文件可以命名为您想要的任何名称,而不必以gem命名。

票数 5
EN

Stack Overflow用户

发布于 2013-04-26 16:15:03

实现此目的的另一种方法是使用别名:

代码语言:javascript
运行
复制
alias my_command=original_command

只要把它放在最适合你的地方。

第三种方法是使用wrapper_script,这是一个具有所需名称的脚本,然后调用原始命令并将它获得的所有参数传递给它:

代码语言:javascript
运行
复制
#!/bin/sh
original_command $@

或者在windows上的cmd.exe中:

代码语言:javascript
运行
复制
@echo off
original_command %*
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16230861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档