我可以从 rbenv 环境外部执行 gem 吗?



我能够安装和执行一个 gem,如下所示:

rbenv install 2.4.1
rbenv local 2.4.1 # enter the environment
gem install fpm
fpm --version

我也希望能够从环境外部执行 gem,如下所示:

rbenv local --unset # leave the environment
rbenv rehash # update shims
fpm --version

但相反,我得到:

rbenv: fpm: command not found
The `fpm' command exists in these Ruby versions:
2.4.1

我是否误解了 rbenv 垫片的工作原理?我可以从 rbenv 环境外部执行 gem 吗?

从你的Github问题的评论来看,你现在似乎有了基本的想法;rbenv填充程序只不过是美化的shell脚本,它将命令绑定到特定的当前活动的Ruby版本。

但是,没有什么可以阻止您创建自己的硬编码填充码。例如,假设您希望此全局fpm命令在任何特定 rbenv 环境之外可用。

这里有一个简单的方法:

> rbenv local 2.4.1
> ln -s `rbenv which fpm` ~/.rbenv/bin/fpm24
> rbenv local --unset
> fpm24 --version
1.10.2

这会在~/.rbenv/bin/fpm24中安装一个"填充程序",该填充程序是指向 rbenv 之前安装的 2.4.1 gem 的硬编码指针。现在,只要您在 PATH 中~/.rbenv/bin,这个fpm24命令就可以在任何地方工作。

最新更新