Почему я получаю сообщение об ошибке при установке поиска lunr.js на Jekyll?

Я пытаюсь установить lunr.js на сайте jekyll и получаю эта ошибка:

Users/tjohnson/projects/resolve/_plugins/jekyll_lunr_js_search.rb:5:in `require': cannot load such file -- v8 (LoadError)
from /Users/tjohnson/projects/resolve/_plugins/jekyll_lunr_js_search.rb:5:in `<top (required)>'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:58:in `require'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:58:in `block (2 levels) in require_plugin_files'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:57:in `each'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:57:in `block in require_plugin_files'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:56:in `each'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:56:in `require_plugin_files'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:18:in `conscientious_require'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/site.rb:74:in `setup'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/site.rb:36:in `initialize'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/commands/build.rb:28:in `new'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/commands/build.rb:28:in `process'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/commands/serve.rb:25:in `block (2 levels) in init_with_program'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `call'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `block in execute'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `each'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `execute'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/program.rb:42:in `go'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary.rb:19:in `program'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/bin/jekyll:18:in `<top (required)>'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/jekyll:23:in `load'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/jekyll:23:in `<main>'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/ruby_executable_hooks:15:in `eval'
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/ruby_executable_hooks:15:in `<main>'

Я пытаюсь следовать инструкциям на https://github.com/slashdotdash/jekyll-lunr-js-search, но я немного новичок в Jekyll, поэтому, возможно, я не все понимаю. Есть два способа установить его: с помощью rubygem или напрямую загрузить готовый файл плагина. Я выбрал последнее. Вот шаги, которые я предпринял:

  1. Клонировал репо на мою локальную машину.
  2. Папка jekyll_lunr_js_search.rb и jekyll_lunr_js_search перемещена в мой каталог _plugins.
  3. Скачал уменьшенный файл search.min.js (который содержит много других js) и добавил его в мой каталог javascript.
  4. Добавлен jquery.lunr.search.js в мой каталог javascript.
  5. В мой файл default.html добавлены следующие ссылки:
<script src="{{ "/javascripts/search.min.js" | prepend:site.baseurl }}">
    </script>
    <script src="{{ "/javascripts/jquery.lunr.search.js" | prepend:site.baseurl}}"></script>
  1. Также добавил этот скрипт в мой default.html (через include):
 <script type="text/javascript">
    $(function() {
    $('#search-query').lunrSearch({
         indexUrl: '/js/index.json',   // Url for the .json file containing search index data
          results : '#search-results',  // selector for containing search results element
          entries : '.entries',         // selector for search entries containing element (contained within results above)
          template: '#search-results-template'  // selector for Mustache.js template
        });
      });
    </script>
  1. Добавил эту форму поиска на страницу:
 <div id="search">
      <form action="/search" method="get">
        <input type="text" id="search-query" name="q" placeholder="Search" autocomplete="off">
      </form>
        </div>

и этот контейнер результатов прямо под формой на той же странице:

 <section id="search-results" style="display: none;">
      <p>Search results</p>
      <div class="entries">
      </div>
    </section>

и этот шаблон усов прямо под ним:

 {% raw %}
    <script id="search-results-template" type="text/mustache">
      {{#entries}}
        <article>
          <h3>
            {{#date}}<small><time datetime="{{pubdate}}" pubdate>{{displaydate}}</time></small>{{/date}}
            <a href="{{url}}">{{title}}</a>
          </h3>
        </article>
      {{/entries}}
    </script>
    {% endraw %}

Теперь, когда я создаю свой сайт jekyll, я получаю указанную ранее ошибку. (Я не получаю эту ошибку без плагина.) Есть идеи? Мне действительно нужна функция поиска на моем сайте, и эта, кажется, лучшая.


person Tom Johnson    schedule 31.01.2015    source источник
comment
Я также столкнулся с той же проблемой, попытался использовать gem install libv8, как это было предложено во многих искомых элементах, но это тоже не сработало...   -  person Angshu Guha    schedule 12.09.2015


Ответы (1)


Попробуйте сначала установить гем libv8 Ruby.

gem install libv8 -v '3.16.14.7'

or

gem install libv8 -v '3.16.14.7' -- --with-system-v8

Затем установите последнюю версию драгоценного камня jekyll_lunr_js_search.

gem install jekyll-lunr-js-search

Наконец, включите ссылку на гем плагина в файл конфигурации _config.yml вашего сайта Jekyll.

gems: ['jekyll-lunr-js-search']
person Ben Smith    schedule 14.11.2015