问题描述

我希望找到一个在线编辑jekyll的文档的方式,这样我们可以使用不同的设备在网页进行编辑。好消息是jekyll有一个专门用于实现的插件叫做jekyll-admin,可以比较方便的进行管理。

正常来说,在Gemfile和_config里添加jekyll-admin,然后再执行bundle install命令即可使用这个插件。但是这次却在静态网页bulid之后发生了问题。

问题报错如下:

jekyll_admin_monkey_patch': uninitialized constant Rack::Handler (NameError)

          @server.mount "/admin", Rack::Handler::WEBrick, JekyllAdmin::StaticServer
                                               ^^^^^^^^^

未找到rack里对于webrick的定义

然而我使用bundle list出现的结果确实有的,怀疑是出现了包依赖问题

解决方法

尝试了bundle update等方法更新rack, 但是到了最新版本问题依然存在。进一步怀疑是包依赖发生了冲突?使用bundle check并没有找到冲突的依赖项,让人更是摸不着头脑。

最后我去jekyll-admin的Github Issue上看了一下才发现了问题。这个问题是jekyll-admin 的依赖项sinatra的更新导致的——sinatra 版本更新到 4.0之后放弃了对 rack 2 的支持。

只需在 gemfile 中添加此内容将sinatra版本回退到4.0之前即可。

gem "sinatra", ">= 3", "< 4"