ruby - 是什么导致 jekyll 在任何命令上抛出 "undefined method ` require_from_bundler'"错误?

标签 ruby ubuntu jekyll

我正在 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/

相关文章:

python - 纺织品解析 YAML

jekyll - 如何全局设置 Jekyll 站点中的所有 URL 以在新的浏览器选项卡中打开?

Jekyll 排除文件夹不匹配

ruby-on-rails - RoR 中的 SEO 友好 URL

ruby - 不转义双引号等可打印字符的 Ruby String.dump 替代品 (Ruby 1.8.7)

ruby - 以二进制模式打开文件并保存它添加新行

arrays - 将数据库中现有的字符串字段类型转换为数组字段类型 | Rails + PostgreSQL

mysql - Ubuntu 中的 MySQL JDBC jar 文件在哪里?

php - 在 ubuntu 16.04 上安装 phpmyadmin 后出现错误 500

ubuntu - 找不到适合 'ffmpeg' 的输出格式 - ffmpeg : Invalid argument