【问题标题】:Bundler does not find gems installed in the user directoryBundler 找不到安装在用户目录中的 gem
【发布时间】:2019-10-03 20:28:04
【问题描述】:

我正在根据 Jekyll 主页上提供的信息在我的计算机上设置 Jekyll。 Ruby 2.6.3 是通过rbenv 安装的。

在第一步中,我创建了一个最小的 Gemfile,只包含 Jekyll

source "https://rubygems.org"
ruby "2.6.3"

group :base do
    gem 'jekyll', '4.0.0'
end

我通过bundle install 安装了所有gem,据我所知,它们已正确安装。我通过

验证了它
user@host:homepage> bundle info jekyll
  * jekyll (4.0.0)
        Summary: A simple, blog aware, static site generator.
        Homepage: https://jekyllrb.com
        Path: /Users/user/.gem/ruby/2.6.0/gems/jekyll-4.0.0

根据教程,我现在应该可以通过bundle exec jekyll serve 运行 Jekyll。如果我现在执行此命令,我总是会收到此错误:

user@host:homepage> bundle exec jekyll serve
bundler: command not found: jekyll
Install missing gem executables with `bundle install`            

为什么 Bundler 找不到已安装的 gem?

只有在运行带有 --path 选项的 Bundler 时我才能工作,如下所示:bundle install --path vendor/bundle。然后Bundler也写.bundle/config,内容如下:

---
BUNDLE_PATH: "vendor/bundle"

在这种情况下,很明显 Bundler 能够找到已安装的 gem。

但是 Bundler 不应该也不能在没有明确路径的情况下找到安装的 gems 吗?我只想下载和安装 gems 一次,而不是每个项目。

【问题讨论】:

  • 我也有类似的问题。我是 ruby​​/jekyll 的新手;通过step-by-step tutorial。在本地安装了 jekyll 和 bundler (~/.gem/ruby/2.7.0/bin/*)。我也做了bundle config set path 'vendor/bundle' 所以每次我做jekyll new [PATH] gems 都安装在那里。我正在寻找一种方法,bundle install 可以找到我的本地 jekyll gem,而无需在每个小项目中安装它。我试过 `gem "jekyll", :path => "/User/Steve/.gem/ruby/2.7.0/bin/jekyll" 但 :path 似乎只是当前目录的相对路径。你找到答案了吗?

标签: rubygems jekyll bundler


【解决方案1】:

我认为这里有两个问题需要解决。

首先关于捆绑器的使用。

bundler 的工作方式是,当你克隆一个项目时,你总是从项目根目录运行它。

bundle install --path vendor/bundle

这就是项目和教程的全部内容。

在同一项目中的后续安装命令中,导航到项目根目录并运行

bundle install

Bundle 使用之前创建的配置文件。这不应该在版本控制中,因为它对于 dev 和 prod 部署看起来不同(prod deploy 应该有一个 freeze 属性)

如果您第一次省略该路径,您将安装到默认目录。我不知道这是在哪里,但它会失败并给出解释,除非你使用sudo - 你可能想避免这种情况。错误信息解释得很好。


第二个问题是如何安装一次 gem 并跨项目重用它。我只为两颗宝石这样做。两者都显示在这里。请注意缺少 bundle install 以及添加了 use 标志,否则可能会出现需要 sudo 的错误。

gem install bundler jekyll --user-install

现在您可以在任何地方运行jekyll,而无需使用 bundle exec。 您可以从任何可能已经运行过的地方运行 bundle。

顺便说一句,我以前没有在 Gemfile 中看到过 Ruby 版本。这不是必需的,并且可能对其他机器有限制。按照模板项目或 jekyll 教程设置 Gemfile

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2012-06-08
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多