繁体   English   中英

为 Jekyll 创建本地 gem 并不断收到“没有安装 jekyll-custom-plugin 或其依赖项之一”,因为 jekyll 无法找到它

[英]Creating local gem for Jekyll and keep getting “don't have jekyll-custom-plugin or one of its dependencies installed” as jekyll unable to find it

我为我的 Jekyll 和 gem 创建了名为“ jekyll-custom-plugin ”的新的自定义 gem,这已成功构建。

robbi@pc MINGW64 /d/Workplace/ruby/jekyll-custom-plugin(master)
$ gem build  jekyll-custom-plugin.gemspec
  Successfully built RubyGem
  Name:  jekyll-custom-plugin
  Version: 1.0.3
  File:  jekyll-custom-plugin-1.0.3.gem

我根据需要使用文件路径和文件版本打开并修改了我的gemfile插件

group :jekyll_plugins do
  # put here other jekyll plugins..
    gem 'jekyll-custom-plugin', '1.0.3', :path => 'd:/Workplace/ruby/jekyll-custom-plugin'
end

我的 jekyll _config.yml像往常一样调用插件

plugins:
  - jekyll-custom-plugin

但是当我尝试建立网站时( bundle updatebundle installbundle exec jekylly serve ),我不断得到

robbi@pc MINGW64 /d/NOPE/robbinespu.gitlab.io (master)
$ bundle exec jekyll serve
Configuration file: D:/NOPE/robbinespu.gitlab.io/_config.yml
 Theme Config file: C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/octoflavor-ee4be458ed67/_config.yml
  Dependency Error: Yikes! It looks like you don't have jekyll-custom-plugin or one of its dependencies installed. In order to use Jekyll as currently configured, you'll need to install this gem. If you've run Jekyll with `bundle exec`, ensure that you have included the jekyll-custom-plugin gem in your Gemfile as well. The full error message from Ruby is: 'cannot load such file -- jekyll-custom-plugin' If you run into trouble, you can find helpful resources at https://jekyllrb.com/help/!
                    ------------------------------------------------
      Jekyll 4.0.0   Please append `--trace` to the `serve` command
                     for any additional information or backtrace.
                    ------------------------------------------------

这很奇怪,因为我已经安装并显示在这里

robbi@pc MINGW64 /d/NOPE/robbinespu.gitlab.io (master)
$ bundle install | grep custom
Using jekyll-custom-plugin 1.0.3 from source at `d:/Workplace/ruby/jekyll-custom-plugin`

robbi@pc MINGW64 /d/NOPE/robbinespu.gitlab.io (master)
$ bundle info jekyll-custom-plugin
  * jekyll-custom-plugin (1.0.3)
        Summary: A Jekyll plugin to provide XXX.
        Homepage: https://github.com/robbinespu/XXX
        Path: d:/Workplace/ruby/jekyll-custom-plugin

甚至bundle说它已经安装并匹配版本

robbi@pc MINGW64 /d/NOPE/robbinespu.gitlab.io (master)
$ bundle list | custom
  * jekyll-custom-plugin (1.0.3)

这里--trace日志

$ bundle exec jekyll s --trace
Configuration file: D:/NOPE/robbinespu.gitlab.io/_config.yml
 Theme Config file: C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/octoflavor-ee4be458ed67/_config.yml
  Dependency Error: Yikes! It looks like you don't have jekyll-custom-plugin or one of its dependencies installed. In order to use Jekyll as currently configured, you'll need to install this gem. If you've run Jekyll with `bundle exec`, ensure that you have included the jekyll-custom-plugin gem in your Gemfile as well. The full error message from Ruby is: 'cannot load such file -- jekyll-custom-plugin' If you run into trouble, you can find helpful resources at https://jekyllrb.com/help/!
C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/external.rb:73:in `rescue in block in require_with_graceful_fail': jekyll-custom-plugin (Jekyll::Errors::MissingDependencyException)
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/external.rb:58:in `block in require_with_graceful_fail'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/external.rb:57:in `each'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/external.rb:57:in `require_with_graceful_fail'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/plugin_manager.rb:30:in `require_gems'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/plugin_manager.rb:22:in `conscientious_require'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/site.rb:125:in `setup'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/site.rb:35:in `initialize'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/commands/build.rb:30:in `new'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/commands/build.rb:30:in `process'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/command.rb:91:in `each'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/commands/serve.rb:86:in `block (2 levels) in init_with_program'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/exe/jekyll:15:in `<top (required)>'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bin/jekyll:23:in `load'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bin/jekyll:23:in `<main>'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/external.rb:60:in `require': cannot load such file -- jekyll-custom-plugin (LoadError)
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/external.rb:60:in `block in require_with_graceful_fail'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/external.rb:57:in `each'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/external.rb:57:in `require_with_graceful_fail'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/plugin_manager.rb:30:in `require_gems'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/plugin_manager.rb:22:in `conscientious_require'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/site.rb:125:in `setup'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/site.rb:35:in `initialize'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/commands/build.rb:30:in `new'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/commands/build.rb:30:in `process'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/command.rb:91:in `each'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/lib/jekyll/commands/serve.rb:86:in `block (2 levels) in init_with_program'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bundler/gems/jekyll-2bc1e04620ce/exe/jekyll:15:in `<top (required)>'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bin/jekyll:23:in `load'
        from C:/Ruby26-x64/lib/ruby/gems/2.6.0/bin/jekyll:23:in `<main>'

异常消息没有给出失败的(根本原因)原因。

按照建议添加--trace ,检查引发错误的文件并查看引发的错误是如何构造的。 这可以遵循如下模式:

    begin
      # ...
    rescue LoadError => e
      raise "Generic error message not including anything from 'e.'"
    end

...在这种情况下更改为:

begin
  # ...
rescue LoadError => e
  raise "Error message: #{e.class}: #{e}"
end

...您将显示根本原因。

如果你不那么幸运,你会看到:

if $SOME_GLOBAL_FLAG
  raise "Generic error message"
end

在这种情况下,标志设置在 LoadError 的救援块中的其他位置。 您需要寻找救援并从那里打印错误。

无论哪种情况,我个人都会将根本原因异常的遗漏报告给使用任一模式作为错误的库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM