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

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

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

经过一段谷歌搜索后我才能找到答案。运行:

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

路径在位于的文件中指定

 .bundle/config 

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

 bundle install --path vendor/bundle 

祝好运!

注意这个……

从捆绑手册页:

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

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

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

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

因此,您应该以当前用户身份运行bundle install,如果需要将gem放入最终位置,bundler将询问您的密码。

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

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

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