Module: Jekyll::Algolia

Included in:
Configurator, ErrorHandler, Extractor, FileBrowser, Indexer, ProgressBar, Shrinker
Defined in:
lib/jekyll-algolia.rb,
lib/jekyll/algolia/hooks.rb,
lib/jekyll/algolia/utils.rb,
lib/jekyll/algolia/logger.rb,
lib/jekyll/algolia/indexer.rb,
lib/jekyll/algolia/version.rb,
lib/jekyll/algolia/shrinker.rb,
lib/jekyll/algolia/extractor.rb,
lib/jekyll/algolia/configurator.rb,
lib/jekyll/algolia/file_browser.rb,
lib/jekyll/algolia/progress_bar.rb,
lib/jekyll/algolia/error_handler.rb,
lib/jekyll/algolia/overwrites/jekyll-algolia-site.rb

Overview

Requirable file, loading all dependencies. Methods here are called by the main ‘jekyll algolia` command

Defined Under Namespace

Modules: Configurator, ErrorHandler, Extractor, FileBrowser, Hooks, Indexer, Logger, ProgressBar, Shrinker, Utils Classes: Site

Constant Summary collapse

MissingCredentialsError =
Class.new(StandardError)
VERSION =
'1.4.11'

Class Method Summary collapse

Class Method Details

.init(config = {}) ⇒ Object

Public: Init the Algolia module

config - A hash of Jekyll config option (merge of _config.yml options and options passed on the command line)

The gist of the plugin works by instanciating a Jekyll site, monkey-patching its ‘write` method and building it.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/jekyll-algolia.rb', line 31

def self.init(config = {})
  # Monkey patch Jekyll and external plugins
  load_overwrites

  config = Configurator.init(config).config
  @site = Jekyll::Algolia::Site.new(config)

  unless Configurator.assert_valid_credentials
    raise(
      MissingCredentialsError,
      "One or more credentials were not found for site at: #{@site.source}"
    )
  end

  Configurator.warn_of_deprecated_options

  if Configurator.dry_run?
    Logger.log('W:==== THIS IS A DRY RUN ====')
    Logger.log('W:  - No records will be pushed to your index')
    Logger.log('W:  - No settings will be updated on your index')
  end

  self
end

.load_overwritesObject

Public: Monkey patch Jekyll and external plugins so they don’t interfere with our plugin

Note: This is only loaded when running ‘jekyll algolia` so should not have any impact on regular builds



61
62
63
64
65
66
67
68
69
70
# File 'lib/jekyll-algolia.rb', line 61

def self.load_overwrites
  require 'jekyll/algolia/overwrites/githubpages-configuration'
  require 'jekyll/algolia/overwrites/jekyll-algolia-site'
  require 'jekyll/algolia/overwrites/jekyll-document'
  require 'jekyll/algolia/overwrites/jekyll-paginate-pager'
  require 'jekyll/algolia/overwrites/jekyll-tags-link'

  # Register our own tags to overwrite the default tags
  Liquid::Template.register_tag('link', JekyllAlgoliaLink)
end

.runObject

Public: Run the main Algolia module

Actually “process” the site, which will acts just like a regular ‘jekyll build` except that our monkey patched `write` method will be called instead.

Note: The internal list of files to be processed will only be created when calling .process



80
81
82
83
# File 'lib/jekyll-algolia.rb', line 80

def self.run
  Logger.log('I:Processing site...')
  @site.process
end

.siteObject

Public: Get access to the Jekyll site

Tests will need access to the inner Jekyll website so we expose it here



88
89
90
# File 'lib/jekyll-algolia.rb', line 88

def self.site
  @site
end