我正在 Ubuntu 15.04 上的一个 jekyll 网站上工作,当我尝试 jekyll serve
(或任何其他 jekyll 命令,有或没有 sudo)时,我收到以下信息:
/var/lib/gems/2.1.0/gems/jekyll-3.1.2/bin/jekyll:9:in `<top (required)>': undefined method `require_from_bundler' for Jekyll::PluginManager:Class (NoMethodError)
from /usr/local/bin/jekyll:23:in `load'
from /usr/local/bin/jekyll:23:in `<main>'
我最近在这台计算机上处理 jekyll 站点时没有遇到这个问题,我不确定配置是如何更改以生成此错误的。我试过 gem uninstall jekyll
并重新安装它,同样的问题发生了。我不是 Ruby 开发人员,我对如何解决这个问题有点不知所措。
最佳答案
好吧,我建议你用 Bundler 运行 Jekyll ,这是一个很棒的依赖管理器。它将确保您拥有所需的所有 gem 。
第一。卸载 Jekyll 2.2.0。这个版本太旧,需要 Python 运行一些依赖项。 Jekyll 3.x 不再需要 Python。
因此,运行 sudo gem uninstall jekyll --version 2.2.0
。 (或 gem uninstall jekyll -v 2.2.0
)
第二。现在,安装 Bundler:
gem install bundler
(或 sudo gem install bundler
)
3rd. 添加一个 Gemfile
(不要给它任何扩展名)到您的站点根目录,内容如下:
source "https://rubygems.org"
gem 'jekyll', '3.1.2'
这将确保您已安装 Jekyll 3.1.2 及其所有依赖项。
如果您将站点部署到 GitHub,则 Gemfile 必须不同:
source "https://rubygems.org"
gem 'github-pages'
这将包括当时在 GitHub 页面上运行的 Jekyll 版本。
4th. 使用终端,cd path/to/path
到您的站点根目录并在那里运行 bundle install
。 Bundler 将为您安装所有依赖项并创建一个名为 Gemfile.lock
的新文件,其中将包含为该项目安装的所有依赖项的列表。
5th. 运行bundle exec jekyll serve
完成!
注意 1:我建议您使用 Jekyll 3.0.3,因为我认为它比 3.1.2 更好(似乎 3.1.2 上有一些 3.0.3 中没有的错误)。无论如何,基于意见的提示 - 由您决定。
注意 2:如果您的计算机上没有安装 openssl,请替换 Gemfile 中的协议(protocol):
source "https://rubygems.org"
替换为
source "http://rubygems.org"
供引用:
就是这样!希望对您有所帮助!
关于ruby - 是什么导致 jekyll 在任何命令上抛出 "undefined method ` require_from_bundler'"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35760407/