Sha256: da56a58a4871a951f6c88cd0a09c4190587c71db85234c772536b15e1b507a0c

Contents?: true

Size: 1.4 KB

Versions: 5

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

class Bridgetown::Site
  module SSR
    def self.included(base)
      base.extend ClassMethods
    end

    module ClassMethods
      # Establish an SSR pipeline for a persistent backend process
      def start_ssr! # rubocop:todo Metrics/AbcSize
        if Bridgetown::Current.site
          raise Bridgetown::Errors::FatalException, "Bridgetown SSR already started! " \
                                                    "Check your Rack app for threading issues"
        end

        Bridgetown::PluginManager.require_from_bundler
        site = new(Bridgetown::Current.preloaded_configuration)
        site.enable_ssr

        Bridgetown::Hooks.trigger :site, :pre_read, site
        site.defaults_reader.tap do |d|
          d.path_defaults.clear
          d.read
        end
        site.layouts = Bridgetown::LayoutReader.new(site).read
        site.collections.data.tap do |coll|
          coll.read
          site.data = coll.merge_data_resources
        end
        Bridgetown::Hooks.trigger :site, :post_read, site

        yield(site) if block_given? # provide additional setup hook

        site
      end
    end

    def ssr?
      @ssr_enabled == true
    end

    def enable_ssr
      Bridgetown.logger.info "SSR:", "enabled."
      @ssr_enabled = true
    end

    def disable_ssr
      Bridgetown.logger.info "SSR:", "now disabled."
      @ssr_enabled = false
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
bridgetown-core-1.0.0.alpha6 lib/bridgetown-core/concerns/site/ssr.rb
bridgetown-core-1.0.0.alpha5 lib/bridgetown-core/concerns/site/ssr.rb
bridgetown-core-1.0.0.alpha4 lib/bridgetown-core/concerns/site/ssr.rb
bridgetown-core-1.0.0.alpha3 lib/bridgetown-core/concerns/site/ssr.rb
bridgetown-core-1.0.0.alpha2 lib/bridgetown-core/concerns/site/ssr.rb