【发布时间】:2011-08-17 06:11:35
【问题描述】:
我不小心运行了 sudo bundle install smtp_mail,现在我所有的 gem 都在我的 Rails 应用程序中名为 smtp_mail 的目录中。
我不确定宝石的默认位置?而且,我的 Rails 应用程序在启动时会抱怨。有什么办法可以恢复吗?
【问题讨论】:
我不小心运行了 sudo bundle install smtp_mail,现在我所有的 gem 都在我的 Rails 应用程序中名为 smtp_mail 的目录中。
我不确定宝石的默认位置?而且,我的 Rails 应用程序在启动时会抱怨。有什么办法可以恢复吗?
【问题讨论】:
经过一番谷歌搜索后,我找到了答案 运行:
sudo bundle install --system,您将把 gem 放回相应的系统目录中。
【讨论】:
注意这个...
来自捆绑手册页:
默认情况下,bundler 将 gem 安装到与 gem install 相同的位置。
您永远不应该使用 sudo bundle install。这是因为捆绑安装中的其他几个步骤必须以当前用户身份执行:
- 更新您的 Gemfile.lock
- 如有必要,更新您的供应商/缓存
- 使用用户的 SSH 密钥签出私有 git 存储库
在这三个中,前两个理论上可以通过将结果文件更改为 $SUDO_USER 来执行。然而,第三个只能通过以当前用户的身份实际调用 git 命令来执行。因此,git gem 被下载并安装到 ~/.bundle 而不是 $GEM_HOME 或 $BUNDLE_PATH。
因此,您应该以当前用户身份运行 bundle install,如果需要将 gem 放入其最终位置,bundler 会询问您的密码。
【讨论】:
路径在位于
的文件中指定.bundle/config
如果您删除 .bundle 目录,然后删除您的 smtp_mail 目录,您将回到第一格。如果您真的想要本地(到您的应用程序)安装 gem,我建议您运行
bundle install --path vendor/bundle
祝你好运!
【讨论】:
当我遇到类似问题时,这对我很有帮助。
我 rm -rf .bundle 中的所有文件,然后删除,然后我按照本文档中的命令进行操作。
【讨论】: