2012-06-02 51 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。