Module: Sourcerer::Jekyll::Bootstrapper
- Defined in:
- lib/sourcerer/jekyll/bootstrapper.rb
Overview
This module provides methods for programmatically setting up a Jekyll site
environment, which is useful for loading plugins or creating a mock site for rendering.
Class Method Summary collapse
-
.fake_site(includes_load_paths: [], plugin_dirs: []) ⇒ Jekyll::Site
Creates an ephemeral Jekyll site instance for rendering purposes.
-
.load_plugins(plugin_dirs: []) ⇒ Jekyll::Site
Loads Jekyll plugins from specified directories.
Class Method Details
.fake_site(includes_load_paths: [], plugin_dirs: []) ⇒ Jekyll::Site
Creates an ephemeral Jekyll site instance for rendering purposes.
This is useful for leveraging Jekyll's templating outside of a full site build.
rubocop:disable Lint/UnusedMethodArgument
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/sourcerer/jekyll/bootstrapper.rb', line 41 def self.fake_site includes_load_paths: [], plugin_dirs: [] # NOTE: plugin_dirs parameter is accepted but not yet implemented; reserved for future plugin loading ::Jekyll.logger.log_level = :error if ::Jekyll.logger.respond_to?(:log_level=) config = ::Jekyll.configuration( 'source' => Dir.pwd, 'includes_dir' => includes_load_paths.first, 'includes_load_paths' => includes_load_paths, 'destination' => File.join(Dir.pwd, '_site'), 'quiet' => true, 'skip_config_files' => true, 'disable_disk_cache' => true) site = ::Jekyll::Site.new(config) include_paths = site.includes_load_paths || [] site.inclusions ||= {} include_paths.each do |dir| Dir[File.join(dir, '**/*')].each do |file| next unless File.file?(file) relative_path = file.sub("#{dir}/", '') site.inclusions[relative_path] = File.read(file) end end site.instance_variable_set(:@liquid_renderer, ::Jekyll::LiquidRenderer.new(site)) plugin_manager = ::Jekyll::PluginManager.new(site) plugin_manager.conscientious_require site end |
.load_plugins(plugin_dirs: []) ⇒ Jekyll::Site
Loads Jekyll plugins from specified directories.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/sourcerer/jekyll/bootstrapper.rb', line 15 def self.load_plugins plugin_dirs: [] config = ::Jekyll.configuration( { 'source' => Dir.pwd, 'destination' => File.join(Dir.pwd, '_site'), 'quiet' => true, 'skip_config_files' => true, 'plugins_dir' => plugin_dirs.map { |d| File.(d) }, 'disable_disk_cache' => true }) site = ::Jekyll::Site.new(config) site.plugin_manager.conscientious_require ::Jekyll::Hooks.trigger :site, :after_init, site site end |