什么导致jekyll抛出一个未定义的方法`require_from_bundler'"任何命令都有错误?

时间:2016-03-02 23:36:19

标签: 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开发者,我对如何解决这个问题感到有些不知所措。

1 个答案:

答案 0 :(得分:3)

好吧,我建议你用Bundler运行Jekyll,这是一个很棒的依赖管理器。它将确保您拥有所需的所有宝石。

<强>第一即可。卸载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

第3次。使用以下内容向您的网站根添加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版本。

第4位。使用终端cd path/to/path到您的站点根目录并在那里运行bundle install。 Bundler将为您安装所有依赖项并创建一个名为Gemfile.lock的新文件,该文件将包含为该项目安装的所有依赖项的列表。

第5位。运行bundle exec jekyll serve

完成!

注意1:我建议您使用Jekyll 3.0.3,因为我认为它比3.1.2更好(3.1.2上似乎有一些在3.0中没有的错误。 3)。无论如何,基于意见的提示 - 它取决于你。

注意2:如果您没有在计算机上安装openssl,请替换Gemfile中的协议:

source "https://rubygems.org"

替换为

source "http://rubygems.org"

供参考:

那就是它!希望有所帮助!