Проблемы с комплектовщиком - неразрешенные спецификации
Я только начал использовать 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, я бы порекомендовал использовать псевдоним. Это проще, и я думаю, что здесь нет необходимости делать что-то причудливое.