2013-05-11 18 views
6

Sto cercando di far funzionare Jekyll su Windows e non sto avendo fortuna. Questa è la prima volta che ho installato/usato Ruby.Jekyll - Liquid Exception: impossibile caricare tale file - yajl/2.0/yajl

L'errore si verifica quando imposto le impostazioni su false in _config.yml.

Messaggio di errore

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

Si potrebbe essere sicuri di aver eseguito 'gem install bundler' e' bundle install'. –

+0

@EricWendelin - Ho provato questo con la gemspec da http://mwmanning.com/2011/11/29/Run-Your-Jekyll-Site-On-Heroku.html e ho avuto lo stesso problema dopo aver eseguito l'installazione :( – Malachi

+3

Sembra tipo è un problema di compatibilità della versione: https://github.com/brianmario/yajl-ruby/issues/116 – scriptin

risposta

2

Il problema era come @scriptin accennato nei commenti.

Ho installato Ruby v 1.9.3 invece e ha risolto il mio problema.

0

È possibile aggirare il problema modificando manualmente il file che restituisce l'errore.

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

2

semplicemente aggiungere la seguente riga nella _config.yml

highlighter: false 

Ora individuare localhost: 4000

0

Le altre soluzioni proposte sembrano né disattivare il codice evidenziazione, o impostarlo su usa Rouge invece di Pygments. Ho bisogno di usare Pygments a causa del suo maggiore supporto linguistico.

Come descritto in https://github.com/brianmario/yajl-ruby/issues/116, questo problema si verifica perché lo yajl precompilato non funzionerà con Ruby 2.0. Ha bisogno di essere compilato. Per fare in modo che sia possibile utilizzare i pygments:

  1. Disinstallare la gemma yajl-ruby precompilata.
  2. Installarlo usando la sintassi mostrata in quel thread github. Si noti che potrebbe essere necessario specificare la versione. Nel mio caso, Jekyll voleva specificatamente 1.1.0, quindi l'ho installato usando questa sintassi:

gem install yajl-ruby --platform = ruby ​​--version = 1.1.0

Dopo aver eseguito questa operazione, Jekyll ha lavorato senza disattivare l'evidenziazione del codice o passando a Rouge.

1

Ho riscontrato un problema simile oggi durante il tentativo di installare Octopress/Jekyll.

Ecco la soluzione che ho trovato.

Fase 1

Vai alla directory gemme del rubino. Nel mio caso si trova a C:/Ruby21/lib/ruby/gems/2.1.0/gems

Cerca yajl.

image1

Si vedrà una cartella chiamata yajl-ruby-1.1.0-x86-mingw32

Si può o non può vedere uno chiamato yajl-ruby-1.2.1

L'uno con un -ruby-1.1.0-x86-mingw32 coda è il valore predefinito. E porta all'errore.

Quello che vogliamo usare è l'altra versione

Fase 2

Se non si dispone del nessunomingw32 versione, eseguire

gem install yajl-ruby 

Questo installerà l'ultima versione.

Nel mio caso l'ultima versione è stata 1.2.1

Fase 3

modificare l'impostazione predefinita dalla versione mingw32 alla versione corrente.

Per farlo, andare al gemfile.lock file del sito web

Trovare la linea che dice yajl-ruby (1.1.0-x86-mingw32)

e modificarlo in yajl-ruby (1.2.1)

o la rispettiva versione scaricata

img_before img_after

Step 4

Questo è tutto. Dovrebbe funzionare ora.

0

Installare Yajl 1.2.0. Sembra essere un bug con 1.2.1.

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

problema risolto.

Non sono sicuro che la parte della piattaforma sia importante come credono gli altri, ma per me ha funzionato.

Problemi correlati