如何修复意外的’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中的所有文件,然后删除,然后我按照本文档中的命令。