Невозможно запустить новую команду 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 ...
.