更新 Ruby、Bundler 和 Jekyll 后 Jekyll 服务出现错误

Jon*_*han 5 ruby jekyll

我尝试更新 Jekyll,但现在遇到了问题。幸运的是,我仍然可以使用 构建我的网站bundle exec jekyll serve,但是当我运行时,jekyll serve我得到以下信息:

Traceback (most recent call last):
        10: from /Users/jon.graft/.rbenv/versions/2.6.3/bin/jekyll:23:in `<main>'
         9: from /Users/jon.graft/.rbenv/versions/2.6.3/bin/jekyll:23:in `load'
         8: from /Users/jon.graft/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/jekyll-4.0.0/exe/jekyll:11:in `<top (required)>'
         7: from /Users/jon.graft/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/jekyll-4.0.0/lib/jekyll/plugin_manager.rb:52:in `require_from_bundler'
         6: from /Users/jon.graft/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.2/lib/bundler.rb:107:in `setup'
         5: from /Users/jon.graft/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.2/lib/bundler/runtime.rb:26:in `setup'
         4: from /Users/jon.graft/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.2/lib/bundler/runtime.rb:26:in `map'
         3: from /Users/jon.graft/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.2/lib/bundler/spec_set.rb:148:in `each'
         2: from /Users/jon.graft/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.2/lib/bundler/spec_set.rb:148:in `each'
         1: from /Users/jon.graft/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.2/lib/bundler/runtime.rb:31:in `block in setup'
/Users/jon.graft/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.2/lib/bundler/runtime.rb:319:in `check_for_activated_spec!': You have already activated i18n 1.6.0, but your Gemfile requires i18n 0.9.5. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
Run Code Online (Sandbox Code Playgroud)

出了什么问题以及如何解决这个问题?我越来越多地与 Jekyll 合作,所以我想了解为什么会发生这种情况,以便在再次发生这种情况时我可以修复/避免它。

Tux*_*.de 5

您的 Gemfile 需要 0.95 版的软件包i18n,但您已经安装了 0.95 版的软件包1.6.0。这就是为什么您需要在命令前面添加bundle exec,以便bundle 可以完成其工作并将包的正确版本转发给 Jekyll。这是正常现象,无需担心。我建议编写一个脚本来让 Jekyll 提供服务或构建,这样您就不必输入这么多。例如, my serve.sh,它甚至为本地服务使用不同的配置:

bundler exec jekyll serve --config config.dev.yml --host 10.10.10.1 --incremental
Run Code Online (Sandbox Code Playgroud)

或者,您可以编辑Gemfile.lock并尝试将版本更改i18n为 1.6.0。我刚刚尝试过,效果很好,但是安装后消息可能相关:


HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
But that may break your application.

Please check your Rails app for 'config.i18n.fallbacks = true'.
If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
'config.i18n.fallbacks = [I18n.default_locale]'.
If not, fallbacks will be broken in your app by I18n 1.1.x.
Run Code Online (Sandbox Code Playgroud)

因此,如果您使用 Jekyll 构建多语言网络,请务必牢记是否出现错误或异常错误。