如何确定哪个Ruby gem拥有指定文件?
如何确定Ruby GEM_HOME下的bin文件所属的gem
我来给你分享几个实用的方法,轻松找出GEM_HOME的bin目录里的文件属于哪个Ruby gem:
查看脚本头部注释
很多Ruby gem生成的可执行脚本,顶部会带有自动生成的注释信息,直接告诉你它属于哪个gem。比如打开~/.gem/ruby/2.4.0/bin/foo看看开头,大概率能看到类似这样的内容:#!/usr/bin/env ruby
This file was generated by RubyGems.The application 'foo' is installed as part of the gem 'foo_cli'.The executable 'foo' is located at ~/.gem/ruby/2.4.0/gems/foo_cli-0.3.2/bin/foo一眼就能看到所属的gem名称和版本。
用
readlink查看符号链接目标
大多数情况下,GEM_HOME/bin目录里的文件其实是符号链接,指向对应gem安装目录里的真实脚本。直接用readlink命令就能看到目标路径:readlink ~/.gem/ruby/2.4.0/bin/foo输出会像
..//gems/foo_cli-0.3.2/bin/foo,其中foo_cli就是gem名称,0.3.2是版本号。用
gem contents全局搜索
如果上面两种方法都不管用,就用gem contents命令遍历所有已安装gem的文件列表,再用grep定位目标文件:gem contents --all | grep -F "/bin/foo"命令执行后会输出包含该bin文件的gem路径,比如
foo_cli-0.3.2/bin/foo,前面的部分就是对应的gem信息。
内容的提问来源于stack exchange,提问作者jayhendren
相关产品推荐
相关产品推荐

