2012-06-02 75 views
10

每當我進入一個gem命令,如在執行寶石,未知命令

gem "tilt" 

gem "mysql" 

我得到這個錯誤:當我運行gem list

While executing gem ... <RuntimeError> 
Unknown command tilt 

,列表中顯示了傾斜和mysql,因此它們已安裝。實際上,我在列表中的每個項目都會出現這個錯誤。什麼可能導致這個?

回答

21

gem不是騙你,他們不是有效的gem命令。

也許你讓命令行和Bundler混淆?例如,加入

gem "tilt" 

到Gemfile並運行bundle install將安裝傾斜。但Bundler使用自己的語法,而不是shell腳本。要使用gem二進制安裝傾斜直接你必須做的:

gem install tilt 

運行gem help會給你的gem的命令行參數的清單。

+0

我問的原因是因爲我想使用命令gem'mysql2','0.2.7'將mysql設置爲特定版本。不幸的是,當我使用這個命令時,我得到了同樣的錯誤。任何想法爲什麼? – nullnullnull

+0

因爲我說的這不是一個有效的命令。如果您在我的問題中閱讀了'gem'的幫助文檔,以及針對那些特定於安裝的'gem help install',您會發現安裝特定版本的正確參數:'gem install mysql2 --version 0.2 .7'。 –

+0

感謝您的提示,安德魯。我從另一個stackoverflow頁面得到原始命令,我無法弄清楚爲什麼它不能在我的系統上工作。我仍然不知道,但你的命令確實有效。也許它與操作系統有關? – nullnullnull

2

您正在使用Gemfile語法,您應該使用命令行語法。這給一試:

gem install mysql2 -v 0.2.7 
+0

就是這樣。謝謝,大衛! – nullnullnull

1

確保你的語法是更多的指導方針正確,你可以鍵入

gem help

要查看紅寶石可接受的語法,

如果你得到這個錯誤「您沒有針對/ Library的寫入權限」

您可以隨時添加sudo以提升權限秒。

例如。 sudo gem install <gemname>

在您的代碼之前使用sudo,並且會爲您提供管理訪問權限(輸入計算機密碼後)。

之後,您可能必須運行bundle install來安裝gem。