如何修复意外的'sudo bundle install dir_name'?

时间:2011-05-02 20:35:48

标签: ruby gem bundler

我不小心跑了sudo bundle install smtp_mail,现在我的所有宝石都在我的Rails应用程序中名为smtp_mail的目录中。

我不确定宝石的默认位置?而且,我的Rails应用程序在启动时抱怨。有没有办法可以恢复?

4 个答案:

答案 0 :(得分:17)

经过一段谷歌搜索后,我找到了答案 跑吧:

sudo bundle install --system你将把你的宝石带回适当的系统目录。

答案 1 :(得分:6)

注意这个......

来自捆绑手册页的

  

默认情况下,bundler会将gem安装到与gem install相同的位置。

     

你永远不应该使用sudo bundle install。这是因为必须以当前用户身份执行bundle install中的其他几个步骤:

     

更新Gemfile.lock       必要时更新供应商/缓存       使用用户的SSH密钥检出私有git存储库

     

在这三个中,前两个理论上可以通过将生成的文件chown到$ SUDO_USER来执行。但是,第三个只能通过实际调用git命令作为当前用户来执行。因此,git gems下载并安装到〜/ .bundle而不是$ GEM_HOME或$ BUNDLE_PATH。

     

因此,您应该以当前用户身份运行捆绑安装,如果需要将宝石放入最终位置,捆绑商将要求您提供密码。

答案 2 :(得分:6)

路径在

中的文件中指定
.bundle/config  

如果删除.bundle目录然后删除smtp_mail目录,您将返回第一个目录。如果你真的想要一个本地(到你的应用程序)安装宝石,我建议你运行

bundle install --path vendor/bundle
祝你好运!

答案 3 :(得分:0)

当我遇到类似问题时,这对我有所帮助。

我rm -rf .bundle中的所有文件然后删除,然后我按照本文档中的命令。

http://ruby-korea.github.io/bundler-site/issues.html