【问题标题】:How can I fix an accidental 'sudo bundle install dir_name'?如何修复意外的“sudo bundle install dir_name”?
【发布时间】:2011-08-17 06:11:35
【问题描述】:

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

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

【问题讨论】:

标签: ruby gem bundler


【解决方案1】:

经过一番谷歌搜索后,我找到了答案 运行:

sudo bundle install --system,您将把 gem 放回相应的系统目录中。

【讨论】:

    【解决方案2】:

    注意这个...

    来自捆绑手册页:

    默认情况下,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 会询问您的密码。

    【讨论】:

    • 是的,我知道这一点。我应该这样做,“Sudo gem install smtp_mail”,但是我没有输入 gem,而是输入了 bundle,这对我来说是一个错误。 :)
    【解决方案3】:

    路径在位于

    的文件中指定
    .bundle/config  
    

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

    bundle install --path vendor/bundle
    

    祝你好运!

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-01
        • 2011-10-02
        • 2016-10-28
        • 1970-01-01
        • 2019-08-29
        • 2016-02-25
        相关资源
        最近更新 更多