2013-05-11 13 views
6

Próbuję przekonać Jekylla do pracy w systemie Windows i nie mam szczęścia. Po raz pierwszy zainstalowałem/użyłem Rubiego.Jekyll - Liquid Exception: nie można załadować takiego pliku - yajl/2.0/yajl

Błąd zniknie, gdy ustawię jednostki w wartości false w _config.yml.

Komunikat o błędzie

D:\Code\Jekyll\test>jekyll serve 
Configuration file: D:/Code/Jekyll/test/_config.yml 
      Source: D:/Code/Jekyll/test 
     Destination: D:/Code/Jekyll/test/_site 
     Generating... Liquid Exception: cannot load such file -- yajl/2.0/yajl in 2013-05-11-welcome-to-jekyll.markdown 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/yajl-ruby-1.1.0-x86-mingw32/lib/yajl/yajl.rb:2:in `<top (required)>' 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/yajl-ruby-1.1.0-x86-mingw32/lib/yajl.rb:1:in `<top (required)>' 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/pygments.rb-0.4.2/lib/pygments/popen.rb:3:in `<top (required)>' 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/pygments.rb-0.4.2/lib/pygments.rb:1:in `<top (required)>' 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/tags/highlight.rb:52:in `render_pygments' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/tags/highlight.rb:45:in `render' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/liquid-2.5.0/lib/liquid/block.rb:106:in `block in render_all' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/liquid-2.5.0/lib/liquid/block.rb:93:in `each' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/liquid-2.5.0/lib/liquid/block.rb:93:in `render_all' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/liquid-2.5.0/lib/liquid/block.rb:82:in `render' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/liquid-2.5.0/lib/liquid/template.rb:124:in `render' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/liquid-2.5.0/lib/liquid/template.rb:132:in `render!' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/convertible.rb:77:in `render_liquid' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/convertible.rb:128:in `do_layout' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/post.rb:285:in `render' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/site.rb:230:in `block in render' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/site.rb:229:in `each' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/site.rb:229:in `render' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/site.rb:44:in `process' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/command.rb:18:in `process_site' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/commands/build.rb:23:in `build' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/lib/jekyll/commands/build.rb:7:in `process' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/jekyll-1.0.1/bin/jekyll:83:in `block (2 levels) in <top (required)>' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/commander-4.1.3/lib/commander/command.rb:180:in `call' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/commander-4.1.3/lib/commander/command.rb:180:in `call' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/commander-4.1.3/lib/commander/command.rb:155:in `run' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/commander-4.1.3/lib/commander/runner.rb:402:in `run_active_command' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/commander-4.1.3/lib/commander/runner.rb:66:in `run!' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/commander-4.1.3/lib/commander/delegates.rb:7:in `run!' 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/commander-4.1.3/lib/commander/import.rb:10:in `block in <top (required)>' 
Build Failed 
+0

Możesz upewnić się, że uruchomiłeś 'pakiet instalacji klejnotów' i 'pakiet instalacji'. –

+0

@EricWendelin - Próbowałem tego z gemspec z http://mwmanning.com/2011/11/29/Run-Your-Jekyll-Site-On-Heroku.html i miał ten sam problem po uruchomieniu instalacji :( – Malachi

+3

Wydaje się jest to problem kompatybilności wersji: https://github.com/brianmario/yajl-ruby/issues/116 – scriptin

Odpowiedz

2

Problemem było jak @scriptin wspomniano w komentarzach.

Zamiast tego zainstalowałem ruby ​​v 1.9.3 i to rozwiązało mój problem.

0

Można obejść go ręcznie, edytując plik, który sprawia, że ​​błąd wygląda tak.

RUBY_VERSION = ~ /(\d+.\d+)/ wymaga "yajl"

2

wystarczy dodać następującą linię w _config.yml

highlighter: false 

Teraz przejdź do localhost: 4000

0

Inne proponowane rozwiązania wydają się albo wyłączyć podświetlanie kodu, lub ustawić go na użyj Rouge zamiast Pygments. Muszę używać Pygments ze względu na większą obsługę językową.

Jak opisano w https://github.com/brianmario/yajl-ruby/issues/116, problem ten występuje, ponieważ prekompilowany yajl nie będzie działać z Ruby 2.0. To musi być skompilowane. Aby to działało, możesz używać jednostek:

  1. Odinstaluj prekompilowany klejnot yajl-ruby.
  2. Zainstaluj go, używając składni pokazanej w tym wątku github. Zwróć uwagę, że może być konieczne określenie wersji. W moim przypadku Jekyll specjalnie chciał 1.1.0, więc zainstalowałem używając tej składni:

instalacja gem yajl-ruby - platforma = ruby ​​--wersja = 1.1.0

Po wykonaniu tej czynności Jekyll pracował bez wyłączania podświetlania kodu lub przełączania na Rouge.

1

Zetknąłem się z podobnym problemem dzisiaj, gdy próbowałem ustawić Octopress/Jekyll.

Oto rozwiązanie, które znalazłem.

Krok 1

Przejdź do katalogu ruby ​​klejnoty. W moim przypadku znajduje się pod adresem C:/Ruby21/lib/ruby/gems/2.1.0/gems

Poszukaj yajl.

image1

Pojawi się folder o nazwie yajl-ruby-1.1.0-x86-mingw32

Może lub nie może zobaczyć jeden o nazwie yajl-ruby-1.2.1

Jeden z -ruby-1.1.0-x86-mingw32 ogona jest domyślny. I prowadzi do błędu.

Co chcemy wykorzystać to inna wersja

Krok 2

Jeśli nie masz żadenmingw32 wersja uruchom

gem install yajl-ruby 

To zainstaluje Najnowsza wersja.

W moim przypadku była najnowsza wersja 1.2.1

Krok 3

Zmień domyślną od wersji do bieżącej wersji mingw32.

Aby to zrobić, należy przejść do witryny gemfile.lock pliku

Znajdź wiersz, który mówi yajl-ruby (1.1.0-x86-mingw32)

i zmienić go na yajl-ruby (1.2.1)

lub odpowiedniej wersji pobranego

img_before img_after

Krok 4

To wszystko. Teraz powinno działać.

0

Zainstaluj Yajl 1.2.0. Wydaje się być błędem w wersji 1.2.1.

gem install yajl-ruby --version=1.2.0 --platform=ruby 

problem rozwiązany.

Nie jestem pewien, czy część platformy jest ważna, jak inni uważają, ale to działało dla mnie.