[英]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 update
、 bundle install
和bundle 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.