我该如何修复意外执行的 'sudo bundle install dir_name'?

12

我不小心运行了sudo bundle install smtp_mail,现在我的所有gems都在一个叫做smtp_mail的目录里面,位于我的Rails应用程序内。

我不确定gems的默认位置是什么?而且,当我启动Rails应用程序时,它也在抱怨。有没有办法可以恢复到之前的状态?


相同问题在这里:https://dev59.com/63A65IYBdhLWcg3wrQl4 - Guilherme Garnier
4个回答

19

在谷歌上搜索一番后,我找到了答案。只需运行以下命令:

sudo bundle install --system,您就可以将宝石恢复到其适当的系统目录中。


7

路径在一个文件中指定,该文件位于

.bundle/config  

如果您删除.bundle目录,然后删除smtp_mail目录,您将回到起点。如果您确实想要安装在应用程序本地的宝石,我建议您运行以下命令:
bundle install --path vendor/bundle

Good luck!


6

注意以下内容...

来自捆绑程序页面:

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

您不应该使用sudo bundle install。这是因为bundle install中的几个其他步骤必须作为当前用户执行:

  • 更新您的Gemfile.lock
  • 如有必要,更新您的vendor/cache
  • 使用您的用户SSH密钥检出私有git存储库

其中前两个理论上可以通过chowning将结果文件更改为$SUDO_USER而执行。然而,第三个只能通过实际调用当前用户的git命令来执行。因此,git gems被下载并安装到~/.bundle而不是$GEM_HOME或$BUNDLE_PATH。

由此,您应该以当前用户身份运行bundle install,如果需要将gems放入其最终位置,则bundler会要求您输入密码。


是的,我知道。我本来应该执行的是'Sudo gem install smtp_mail',但是我不知怎么把gem打成了bundle,这是我的错误。 :) - Jasdeep Singh

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接