2016-08-12 111 views
7

我在我的Gemfile之外運行了brakeman,所以我沒有使用bundler。如何運行紅寶石寶石的特定版本

如果我做gem list,我可以看到我對司閘員

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 

那麼,如何運行司閘員3.3.3版?

回答

3

我不能重現這個問題,但我能想到的幾個原因,這可能會發生:

  • 捆紮機工件(也許在.bundle/)指向舊版本。嘗試在不同的目錄中運行,看看它是否仍然發生
  • 一個錯誤的RubyGems(試行gem update --system
  • 在安裝過程中,它問,如果你想更換brakeman二進制並選擇了「無」
  • 如果您使用一個Ruby版本管理器,也許有版本比另一個不同的路徑(像系統寶石與一個由rvm管理)
  • 任何數量的GEM_PATHbundlergemrvm古怪,有時發生

無論如何,如果我是你,我會gem uninstall brakeman,刪除所有版本,並安裝新鮮。如果您使用的是rvm,請從當前的新寶石或rvm gemset empty開始。

+0

這是核選擇,但它應該工作。我正在使用rvm。我會嘗試。 – Obromios

+0

工作感謝你。 – Obromios

-2
$ gem install brakeman -v 3.3.3 

然後在您的Gemfile(假設你有一個)指向特定的版本,如:

"brakeman", "~> 3.3.3" 
9

如果你安裝了幾個寶石版本,並希望從該命令調用特定版本你可以使用:

brakeman _3.3.3_ [args go here] 

這不是特定於brakeman,你可以爲大多數其他寶石做到這一點。

+0

如果我做'''brakeman _3.3.3_ --version'''它仍然返回3.1.2,那麼我真的在運行3.3.3嗎? – Obromios

+0

嗯,這很奇怪。你是哪個制動員的輸出? – awendt

+1

我在另一個系統上試過這個,它確實有效。我的剎車裝置一定有些奇怪。我已經提出了你的答案。 – Obromios