Проблемы с комплектовщиком - неразрешенные спецификации

Я только начал использовать Jekyll с GitHub Pages и столкнулся с некоторыми проблемами. Я надеялся, что смогу использовать эту тему, хотя она довольно устарела. Я клонировал репо на свой компьютер и побежал bundle install чтобы начать дела.

Просто чтобы прояснить, у меня нет опыта веб-разработки. Я на самом деле разработчик Android, надеясь создать свой собственный блог об Android-разработчике (плюс все остальное, что приходит на ум). Поэтому я не совсем понимаю, что делают многие из этих команд, такие как bundle install или почему необходимо запустить его в этом случае.

Имея это в виду, я пошел вперед и попытался jekyll serveи было показано следующее сообщение:

WARN: Unresolved specs during Gem::Specification.reset:
      rouge (< 4, >= 1.7)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
/home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:313:in `check_for_activated_spec!': You have already activated public_suffix 3.0.2, but your Gemfile requires public_suffix 2.0.5. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:31:in `block in setup'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:26:in `map'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:26:in `setup'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler.rb:107:in `setup'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/jekyll-3.7.3/lib/jekyll/plugin_manager.rb:50:in `require_from_bundler'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/jekyll-3.7.3/exe/jekyll:11:in `<top (required)>'
    from /home/mike/.rbenv/versions/2.3.1/bin/jekyll:23:in `load'
    from /home/mike/.rbenv/versions/2.3.1/bin/jekyll:23:in `<main>

Если я использую bundle exec jekyll serveУ меня есть локальный сервер, и я могу предварительно просмотреть тему. Тем не менее, почему мне нужно добавить "bundle exec", чтобы все заработало? Есть ли опасения, что вам будут показывать эти сообщения? И есть ли способ, которым я могу их исправить?

Кроме того, есть ли способ внести исправления, так что все, что мне нужно сделать, это jekyll serveкроме создания псевдонима? Любые разъяснения и поддержка по этому вопросу с благодарностью!

Если это поможет, вот как выглядит Gemfile:

source "https://rubygems.org"
ruby RUBY_VERSION

# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
#     bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
# gem "jekyll", "3.7.3"

# This is the default theme for new Jekyll sites. You may change this to anything you like.
# gem "minima"

# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
gem "github-pages", group: :jekyll_plugins

# If you have any plugins, put them here!
# group :jekyll_plugins do
#   gem "jekyll-github-metadata", "~> 1.0"
# end

1 ответ

Решение

bundle exec гарантирует, что программа ruby, которая будет запускаться внутри нее, будет использовать гемы, указанные Gemfile для проекта, в котором вы участвуете. Это помогает, когда у вас установлено несколько версий гемов - выбирает правильные версии вместо стандартных / новейших.

В вашем случае сообщение об ошибке говорит You have already activated public_suffix 3.0.2, but your Gemfile requires public_suffix 2.0.5. У вас установлена ​​более новая версия гема, но вам нужна более старая. Вот почему jekyll serve не может начинаться без предварительной bundle exec,

Вы можете отделить ваши драгоценные камни, используя наборы драгоценных камней, чтобы избежать этой проблемы. Поскольку вам просто нужно использовать jekyll, я бы порекомендовал использовать псевдоним. Это проще, и я думаю, что здесь нет необходимости делать что-то причудливое.

Другие вопросы по тегам