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.7.1'

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