Ruby on rails 如何运行特定版本的ruby gem
我在Gemfile之外运行brakeman,所以我不使用bundler 如果我做了Ruby on rails 如何运行特定版本的ruby gem,ruby-on-rails,rubygems,brakeman,Ruby On Rails,Rubygems,Brakeman,我在Gemfile之外运行brakeman,所以我不使用bundler 如果我做了gem列表,我可以看到我有以下关于brakeman的信息 brakeman (3.3.3, 3.3.2, 3.1.4, 3.1.2) 但是,如果我做了brakeman--version,我会 brakeman 3.1.2 所以我没有使用最新版本。如果我做了gem更新制动器或 gem update brakeman, '3.3.3, 我明白了 那么如何运行brakeman版本3.3.3?如果安装了多个gem版本
gem列表
,我可以看到我有以下关于brakeman的信息
brakeman (3.3.3, 3.3.2, 3.1.4, 3.1.2)
但是,如果我做了brakeman--version
,我会
brakeman 3.1.2
所以我没有使用最新版本。如果我做了gem更新制动器
或
gem update brakeman, '3.3.3,
我明白了
那么如何运行brakeman版本3.3.3?如果安装了多个gem版本,并且希望从命令行调用特定版本,则可以使用:
brakeman _3.3.3_ [args go here]
这不是针对brakeman的,您也可以针对大多数其他宝石执行此操作。我无法复制此问题,但我可以想到一些可能发生这种情况的原因:
- 绑定器工件(可能在
中)指向旧版本。尝试在不同的目录中运行,看看它是否仍然发生.bundle/
- RubyGems中的一个bug(尝试
)gem更新--system
- 在安装过程中,它询问您是否要更换
二进制文件,您选择了“否”brakeman
- 如果您使用的是Ruby版本管理器,可能一个版本的路径与另一个不同(比如系统gem与由
管理的版本)rvm
- 任意数量的
,GEM\u路径
,bundler
,GEM
有时会出现的怪异rvm
无论如何,如果我是你,我会
gem卸载brakeman
,删除所有版本,然后安装fresh。如果您使用的是rvm
,请从新的gemset开始,或者从当前的rvm gemset empty
开始。我遇到了类似的问题:我卸载了某个gem版本,但该版本仍然显示出来
TL;DR:
rbenv-rehash
成功了。(显然,仅对rbenv
用户有效)如果我使用brakeman\u 3.3.3\u--version
它仍然返回3.1.2,那么我真的在运行3.3.3吗?我已经在另一个系统上尝试过了,它确实有效。我的刹车装置一定有点奇怪。我对你的答案投了赞成票。为了澄清,你可以对所有其他宝石这样做。尝试gem which brakeman
查看从命令行执行的文件实际上只是RubyGems生成的一个垫片(脚本);该垫片接受\u 3.3.3
参数,并使用它来确定调用哪个版本的brakeman。这是核选项,但应该可以工作。我正在使用rvm。我试试看。
brakeman _3.3.3_ [args go here]