我在Gemfile外运行brakeman,所以我没有使用bundler
如果我选择gem list
,我可以看到我有以下brakeman
brakeman (3.3.3, 3.3.2, 3.1.4, 3.1.2)
但是如果我做brakeman --version
,我得到
brakeman 3.1.2
所以我没有使用最新版本。如果我输入gem update brakeman
或
gem update brakeman, '3.3.3,
我Updating installed gems
Nothing to update
那么我如何运行brakeman 3.3.3版本?
如果您安装了多个gem版本,并且希望从命令行调用特定版本,则可以使用:
brakeman _3.3.3_ [args go here]
这并不是brakeman所特有的,你也可以为大多数其他宝石做这个。
我无法重现这个问题,但我可以想到几个可能发生这种情况的原因:
- 捆绑器构件(可能在
.bundle/
中)指向旧版本。尝试在不同的目录下运行,看看是否仍然发生 RubyGems的bug (try - 在安装过程中,它询问您是否要替换
brakeman
二进制文件,您选择"no" - 如果你正在使用Ruby版本管理器,可能一个版本与另一个版本在不同的路径上(如系统gem与
rvm
管理的版本) - 有时发生的任意数量的
GEM_PATH
,bundler
,gem
,rvm
怪异
gem update --system
)在任何情况下,如果我是你,我会gem uninstall brakeman
,删除所有版本,并安装新的。如果您正在使用rvm
,则从一个新的gemset开始,或者从rvm gemset empty
当前的gemset开始。
我有一个类似的问题:我卸载了一个特定的gem版本,但该版本仍然显示。
TL;DR: rbenv rehash
做到了。(仅对rbenv
用户有效,显然)