Невозможно запустить новую команду Jekyll

Я попытался использовать новую команду Jekyll, но она не сработала и вышла из-за ошибок.

$ jekyll new myblog
/Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/runner.rb:385:in `require_program': program version required (Commander::Runner::CommandError)
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/runner.rb:384:in `each'
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/runner.rb:384:in `require_program'
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/runner.rb:52:in `run!'
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/delegates.rb:8:in `run!'
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/import.rb:10
from /usr/bin/jekyll:23
/Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require': no such file to load -- json (LoadError)
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/jekyll-1.4.3/bin/../lib/jekyll/filters.rb:2
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/jekyll-1.4.3/bin/../lib/jekyll.rb:44
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/jekyll-1.4.3/bin/jekyll:7
from /usr/bin/jekyll:23:in `load'
from /usr/bin/jekyll:23

Я использую Mac OS X 10.8.5 Mountain Lion. Я проверил stackoverflow и нашел сообщение с аналогичной проблемой. Ошибка при запуске новой команды jekyll Затем я попробовал команду ниже.

$ sudo gem install json

Но это не сработало для моей ситуации. Я удалил и переустановил json, но ничего не произошло. Пожалуйста, дайте мне знать, если вы знаете какие-либо другие решения. Я застрял в этой проблеме с начала недели...

список моих драгоценных камней и драгоценных камней следующие.

$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.4)
blankslate (2.1.2.4)
classifier (1.3.4)
colorator (0.1)
commander (4.1.6)
fast-stemmer (1.0.2)
ffi (1.9.3)
highline (1.6.21)
io-console (0.4.2)
jekyll (1.4.3)
json (1.8.1)
liquid (2.5.5)
listen (1.3.1)
maruku (0.7.1)
minitest (4.7.5)
parslet (1.5.0)
posix-spawn (0.3.8)
psych (2.0.3)
pygments.rb (0.5.4)
rake (10.1.0)
rb-fsevent (0.9.4)
rb-inotify (0.9.3)
rb-kqueue (0.2.2)
rdoc (4.1.0)
redcarpet (2.3.0)
safe_yaml (0.9.7)
test-unit (2.1.1.0)
toml (0.1.1)
yajl-ruby (1.1.0)

$ gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.1 (2014-02-24 patchlevel 76) [x86_64-darwin12.0]
  - INSTALLATION DIRECTORY: /usr/local/Cellar/ruby/2.1.1/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /usr/local/Cellar/ruby/2.1.1/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/Cellar/ruby/2.1.1/bin
  - SPEC CACHE DIRECTORY: /Users/MyName/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /usr/local/Cellar/ruby/2.1.1/lib/ruby/gems/2.1.0
     - /Users/MyName/.gem/ruby/2.1.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/bin
     - /usr/local/bin
     - /usr/local/sbin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/git/bin
     - /Users/MyName/.rvm/bin

Пожалуйста, дайте мне совет, чтобы помочь мне. Спасибо!


Обновлено 7 марта.

$ rvm list    
rvm rubies


# No rvm rubies installed yet. Try 'rvm help install'.

На всякий случай вы хотели бы видеть список Homebrew,

$ brew list
autoconf    gmp4        libtool     openssl     readline
automake    libgpg-error    libyaml     pkg-config  ruby
cloog-ppl015    libksba     llvm        ppl011      ruby-build
gcc46       libmpc08    mpfr2       rbenv

2nd обновлено 7 марта.

$ which ruby
/usr/local/bin/ruby

$ which jekyll
/usr/bin/jekyll

$ ruby --version
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0]

$ echo $PATH
/usr/local/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/Users/MyName/.rvm/bin

Я помню, что мой mac был установлен Ruby 1.8.7, прежде чем я установил 2.1.1p76.

Ответ 1

Похоже, что у вас есть несколько версий Ruby в вашей системе (1.8.7 и 2.1.1), что очень распространено, и часть инструментов, таких как rvm и rbenv, были созданы. Проблема в том, что когда вы делали gem install jekyll (возможно, с sudo) и sudo gem install json, они, похоже, оказались в разных местах и ​​не находят друг друга. Место /usr/local/bin обычно находится там, где Homebrew ставит вещи (следовательно, у вас есть ruby, указанный в разделе brew list), и это ваше местоположение Ruby 2.1.1. Однако ваша установка jekyll находится под установленным Apple Ruby 1.8.7.

Шаг 1: попробуйте gem uninstall jekyll, затем gem install jekyll. Это должно решить ваши проблемы.

Шаг 2. Если это не сработает, попробуйте использовать rbenv или rvm, чтобы выбрать другую версию Ruby, затем повторите шаг 1.

Например, мои установки находятся здесь (управляются через rvm):

$ which jekyll
/Users/nicksuch/.rvm/gems/ruby-2.0.0-p247/bin/jekyll
$ which gem
/Users/nicksuch/.rvm/rubies/ruby-2.0.0-p247/bin/gem
$ which ruby
/Users/nicksuch/.rvm/rubies/ruby-2.0.0-p247/bin/ruby

Ответ 2

В моем случае шаблон Jekyll предложил использовать bundle как:

bundle exec jekyll build

Решение заключалось в том, чтобы включить json в Gemfile (который уже был частью источников):

diff --git a/Gemfile b/Gemfile
index 98b29af..b8537cf 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,8 @@
 source "https://rubygems.org"

+gem "json"
 gem "jekyll", "~> 3.0"
 gem "jekyll-sitemap"

ПОДРОБНОСТИ

Что привело меня к решению, был следующий факт:

  • команда gem list json показала json gem установленную;
  • но команда bundle exec gem list json ничего не показывала.

Я также попытался запустить bundle exec gem install json - это не сработало. Мое лучшее предположение заключалось в том, что bundle устанавливает среду для одиночного запуска на основе Gemfile, что является единственным способом сделать множество зависимостей стойкими в каждом выполнении bundle exec ....