Проблемы с бандлером - нерешенные спецификации

Я только начал использовать 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

Можем ли мы увидеть ваш Gemfile?

David Jacquel 04.04.2018 19:57

Абсолютно! Я включу его в исходный вопрос через несколько часов (как только я останусь без работы: D)

coolDude 04.04.2018 20:33

@DavidJacquel Я загрузил свой Gemfile. Сообщите мне, что вы думаете по этому поводу. В целом, похоже, довольно простой Gemfile ...

coolDude 05.04.2018 00:00
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
0
3
530
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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, я бы порекомендовал использовать псевдоним. Так проще и, думаю, ничего особенного тут делать не надо.

Большое спасибо за ваш вклад в это. Все это имеет смысл. Однако почему новая версия гема public_suffix не имеет обратной совместимости со старой?

coolDude 04.04.2018 17:31

Не знаю :). Обратите внимание, что существует большая разница в номерах версий (3,0.2 против 2.0.5), поэтому могут быть критические изменения. Btw bundler не заботится об обратной совместимости - он проверяет только спецификации версии

mrzasa 04.04.2018 17:44

В этом гораздо больше смысла. Спасибо за понимание этого :)

coolDude 05.04.2018 00:07

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