Module: Bridgetown
- Defined in:
- bridgetown-core/lib/bridgetown-core/site.rb,
bridgetown-core/lib/bridgetown-core/slot.rb,
bridgetown-core/lib/bridgetown-core/cache.rb,
bridgetown-core/lib/bridgetown-core/hooks.rb,
bridgetown-core/lib/bridgetown-core/utils.rb,
bridgetown-core/lib/bridgetown-core/errors.rb,
bridgetown-core/lib/bridgetown-core/layout.rb,
bridgetown-core/lib/bridgetown-core/plugin.rb,
bridgetown-core/lib/bridgetown-core/reader.rb,
bridgetown-core/lib/bridgetown-core/tags/l.rb,
bridgetown-core/lib/bridgetown-core/tags/t.rb,
bridgetown-core/lib/bridgetown-core/cleaner.rb,
bridgetown-core/lib/bridgetown-core/current.rb,
bridgetown-core/lib/bridgetown-core/filters.rb,
bridgetown-core/lib/bridgetown-core/helpers.rb,
bridgetown-core/lib/bridgetown-core/watcher.rb,
bridgetown-core/lib/bridgetown-core/tags/dsd.rb,
bridgetown-core/lib/bridgetown-core/component.rb,
bridgetown-core/lib/bridgetown-core/converter.rb,
bridgetown-core/lib/bridgetown-core/generator.rb,
bridgetown-core/lib/bridgetown-core/inflector.rb,
bridgetown-core/lib/bridgetown-core/rack/boot.rb,
bridgetown-core/lib/bridgetown-core/tags/find.rb,
bridgetown-core/lib/bridgetown-core/tags/link.rb,
bridgetown-core/lib/bridgetown-core/tags/with.rb,
bridgetown-core/lib/bridgetown-core/utils/aux.rb,
bridgetown-core/lib/bridgetown-core/collection.rb,
bridgetown-core/lib/bridgetown-core/deprecator.rb,
bridgetown-core/lib/bridgetown-core/drops/drop.rb,
bridgetown-core/lib/bridgetown-core/log_writer.rb,
bridgetown-core/lib/bridgetown-core/model/base.rb,
bridgetown-core/lib/bridgetown-core/log_adapter.rb,
bridgetown-core/lib/bridgetown-core/rack/logger.rb,
bridgetown-core/lib/bridgetown-core/rack/routes.rb,
bridgetown-core/lib/bridgetown-core/static_file.rb,
bridgetown-core/lib/bridgetown-core/yaml_parser.rb,
bridgetown-core/lib/bridgetown-core/commands/new.rb,
bridgetown-core/lib/bridgetown-core/entry_filter.rb,
bridgetown-core/lib/bridgetown-core/front_matter.rb,
bridgetown-core/lib/bridgetown-core/model/origin.rb,
bridgetown-core/lib/bridgetown-core/commands/base.rb,
bridgetown-core/lib/bridgetown-core/configuration.rb,
bridgetown-core/lib/bridgetown-core/resource/base.rb,
bridgetown-core/lib/bridgetown-core/tags/post_url.rb,
bridgetown-core/lib/bridgetown-core/commands/apply.rb,
bridgetown-core/lib/bridgetown-core/commands/build.rb,
bridgetown-core/lib/bridgetown-core/commands/clean.rb,
bridgetown-core/lib/bridgetown-core/commands/start.rb,
bridgetown-core/lib/bridgetown-core/generated_page.rb,
bridgetown-core/lib/bridgetown-core/plugin_manager.rb,
bridgetown-core/lib/bridgetown-core/tags/class_map.rb,
bridgetown-core/lib/bridgetown-core/tags/highlight.rb,
bridgetown-core/lib/bridgetown-core/commands/doctor.rb,
bridgetown-core/lib/bridgetown-core/drops/site_drop.rb,
bridgetown-core/lib/bridgetown-core/liquid_renderer.rb,
bridgetown-core/lib/bridgetown-core/tags/asset_path.rb,
bridgetown-core/lib/bridgetown-core/utils/ruby_exec.rb,
bridgetown-core/lib/bridgetown-core/commands/console.rb,
bridgetown-core/lib/bridgetown-core/commands/esbuild.rb,
bridgetown-core/lib/bridgetown-core/commands/plugins.rb,
bridgetown-core/lib/bridgetown-core/front_matter/ruby.rb,
bridgetown-core/lib/bridgetown-core/liquid_extensions.rb,
bridgetown-core/lib/bridgetown-core/model/repo_origin.rb,
bridgetown-core/lib/bridgetown-core/commands/configure.rb,
bridgetown-core/lib/bridgetown-core/resource/relations.rb,
bridgetown-core/lib/bridgetown-core/ruby_template_view.rb,
bridgetown-core/lib/bridgetown-core/utils/require_gems.rb,
bridgetown-core/lib/bridgetown-core/converters/identity.rb,
bridgetown-core/lib/bridgetown-core/converters/markdown.rb,
bridgetown-core/lib/bridgetown-core/drops/resource_drop.rb,
bridgetown-core/lib/bridgetown-core/filters/from_liquid.rb,
bridgetown-core/lib/bridgetown-core/filters/url_filters.rb,
bridgetown-core/lib/bridgetown-core/model/plugin_origin.rb,
bridgetown-core/lib/bridgetown-core/tags/render_content.rb,
bridgetown-core/lib/bridgetown-core/concerns/localizable.rb,
bridgetown-core/lib/bridgetown-core/concerns/publishable.rb,
bridgetown-core/lib/bridgetown-core/drops/relations_drop.rb,
bridgetown-core/lib/bridgetown-core/filters/date_filters.rb,
bridgetown-core/lib/bridgetown-core/front_matter/loaders.rb,
bridgetown-core/lib/bridgetown-core/liquid_renderer/file.rb,
bridgetown-core/lib/bridgetown-core/model/builder_origin.rb,
bridgetown-core/lib/bridgetown-core/resource/destination.rb,
bridgetown-core/lib/bridgetown-core/resource/transformer.rb,
bridgetown-core/lib/bridgetown-core/drops/bridgetown_drop.rb,
bridgetown-core/lib/bridgetown-core/drops/collection_drop.rb,
bridgetown-core/lib/bridgetown-core/front_matter/defaults.rb,
bridgetown-core/lib/bridgetown-core/front_matter/importer.rb,
bridgetown-core/lib/bridgetown-core/liquid_renderer/table.rb,
bridgetown-core/lib/bridgetown-core/readers/layout_reader.rb,
bridgetown-core/lib/bridgetown-core/utils/loaders_manager.rb,
bridgetown-core/lib/bridgetown-core/commands/registrations.rb,
bridgetown-core/lib/bridgetown-core/concerns/prioritizable.rb,
bridgetown-core/lib/bridgetown-core/concerns/transformable.rb,
bridgetown-core/lib/bridgetown-core/drops/static_file_drop.rb,
bridgetown-core/lib/bridgetown-core/resource/taxonomy_term.rb,
bridgetown-core/lib/bridgetown-core/resource/taxonomy_type.rb,
bridgetown-core/lib/bridgetown-core/readers/defaults_reader.rb,
bridgetown-core/lib/bridgetown-core/tags/live_reload_dev_js.rb,
bridgetown-core/lib/bridgetown-core/converters/erb_templates.rb,
bridgetown-core/lib/bridgetown-core/filters/grouping_filters.rb,
bridgetown-core/lib/bridgetown-core/commands/concerns/actions.rb,
bridgetown-core/lib/bridgetown-core/concerns/layout_placeable.rb,
bridgetown-core/lib/bridgetown-core/converters/ruby_templates.rb,
bridgetown-core/lib/bridgetown-core/drops/generated_page_drop.rb,
bridgetown-core/lib/bridgetown-core/filters/condition_helpers.rb,
bridgetown-core/lib/bridgetown-core/front_matter/loaders/base.rb,
bridgetown-core/lib/bridgetown-core/front_matter/loaders/ruby.rb,
bridgetown-core/lib/bridgetown-core/front_matter/loaders/yaml.rb,
bridgetown-core/lib/bridgetown-core/drops/unified_payload_drop.rb,
bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb,
bridgetown-core/lib/bridgetown-core/converters/serbea_templates.rb,
bridgetown-core/lib/bridgetown-core/filters/translation_filters.rb,
bridgetown-core/lib/bridgetown-core/liquid_renderer/file_system.rb,
bridgetown-core/lib/bridgetown-core/filters/localization_filters.rb,
bridgetown-core/lib/bridgetown-core/resource/permalink_processor.rb,
bridgetown-core/lib/bridgetown-core/utils/smarty_pants_converter.rb,
bridgetown-core/lib/bridgetown-core/commands/concerns/git_helpers.rb,
bridgetown-core/lib/bridgetown-core/readers/plugin_content_reader.rb,
bridgetown-core/lib/bridgetown-core/commands/concerns/summarizable.rb,
bridgetown-core/lib/bridgetown-core/generators/prototype_generator.rb,
bridgetown-core/lib/bridgetown-core/commands/concerns/build_options.rb,
bridgetown-core/lib/bridgetown-core/configuration/configuration_dsl.rb,
bridgetown-core/lib/bridgetown-core/converters/markdown/kramdown_parser.rb,
bridgetown-core/lib/bridgetown-core/commands/concerns/configuration_overridable.rb,
bridgetown-builder/lib/bridgetown-builder.rb,
bridgetown-builder/lib/bridgetown-builder/plugin.rb,
bridgetown-builder/lib/bridgetown-builder/builder.rb,
bridgetown-builder/lib/bridgetown-builder/dsl/http.rb,
bridgetown-builder/lib/bridgetown-builder/dsl/hooks.rb,
bridgetown-builder/lib/bridgetown-builder/dsl/liquid.rb,
bridgetown-builder/lib/bridgetown-builder/dsl/helpers.rb,
bridgetown-builder/lib/bridgetown-builder/dsl/resources.rb,
bridgetown-builder/lib/bridgetown-builder/dsl/generators.rb,
bridgetown-builder/lib/bridgetown-builder/dsl/inspectors.rb,
bridgetown-foundation/lib/bridgetown/version.rb,
bridgetown-foundation/lib/bridgetown-foundation.rb,
bridgetown-foundation/lib/bridgetown/foundation/refine_ext/module.rb,
bridgetown-foundation/lib/bridgetown/foundation/refine_ext/object.rb,
bridgetown-foundation/lib/bridgetown/foundation/refine_ext/string.rb,
bridgetown-foundation/lib/bridgetown/foundation/refine_ext/deep_duplicatable.rb,
bridgetown-paginate/lib/bridgetown-paginate.rb,
bridgetown-paginate/lib/bridgetown-paginate/utils.rb,
bridgetown-paginate/lib/bridgetown-paginate/defaults.rb,
bridgetown-paginate/lib/bridgetown-paginate/paginator.rb,
bridgetown-paginate/lib/bridgetown-paginate/pagination_page.rb,
bridgetown-paginate/lib/bridgetown-paginate/pagination_model.rb,
bridgetown-paginate/lib/bridgetown-paginate/pagination_indexer.rb,
bridgetown-paginate/lib/bridgetown-paginate/pagination_generator.rb,
bridgetown-routes/lib/bridgetown-routes.rb,
bridgetown-routes/lib/bridgetown-routes/manifest.rb,
bridgetown-routes/lib/bridgetown-routes/code_blocks.rb,
bridgetown-routes/lib/bridgetown-routes/view_helpers.rb,
bridgetown-routes/lib/bridgetown-routes/flash_additions.rb,
bridgetown-routes/lib/bridgetown-routes/manifest_router.rb,
bridgetown-core/lib/bridgetown-core.rb
Defined Under Namespace
Modules: Builders, Commands, ConsoleMethods, Converters, Deprecator, Drops, ERBCapture, Errors, Filters, Foundation, FrontMatter, Hooks, LayoutPlaceable, LiquidExtensions, Localizable, Model, Paginate, Prioritizable, Publishable, Rack, Refinements, Resource, RodaCallable, Routes, Streamlined, Tags, Transformable, Utils, Watcher Classes: Builder, Cache, Cleaner, Collection, Component, Configuration, Converter, Current, DefaultsReader, ERBEngine, ERBView, EntryFilter, GeneratedPage, Generator, Inflector, Layout, LayoutReader, LiquidRenderer, LogAdapter, LogWriter, OutputBuffer, Plugin, PluginContentReader, PluginManager, PrototypeGenerator, PrototypePage, PureRubyView, Reader, RubyTemplateView, SerbeaView, Server, Signals, Site, Slot, StaticFile, WrappedObjectWithRefinements, YAMLParser
Constant Summary collapse
- VERSION =
"2.0.0.beta3"
- CODE_NAME =
"(TBD!)"
Class Method Summary collapse
-
.add_refinement(mod) ⇒ Object
-
.begin! ⇒ Object
Set up the Bridgetown execution environment before attempting to load any plugins or gems prior to a site build.
-
.build_errors_path ⇒ String
When there’s a build error, error details will be logged to a file which the dev server can read and pass along to the browser.
-
.configuration(override = {}) ⇒ Hash
Generate a Bridgetown configuration hash by merging the default options with anything in bridgetown.config.yml, and adding the given options on top.
-
.configure ⇒ Object
-
.environment ⇒ Object
(also: env)
Tells you which Bridgetown environment you are building in so you can skip tasks if you need to.
-
.initializer(name, prepend: false, replace: false, &block) ⇒ Object
rubocop:todo Metrics.
-
.load_dotenv(root:) ⇒ Object
Loads ENV configuration via dotenv gem, if available.
-
.load_tasks ⇒ Object
-
.logger ⇒ LogAdapter
Fetch the logger instance for this Bridgetown process.
-
.logger=(writer) ⇒ LogAdapter
Set the log writer.
-
.refine(*obj) ⇒ WrappedObjectWithRefinements
Call this method to wrap any object(s) in order to use Foundation’s refinements.
-
.register_command ⇒ Object
Convenience method to register a new Thor command.
-
.reset_configuration! ⇒ Bridgetown::Configuration::Preflight
Initialize a preflight configuration object, copying initializers and source manifests from a previous standard configuration if necessary.
-
.sanitized_path(base_directory, questionable_path) ⇒ String
Ensures the questionable path is prefixed with the base directory and prepends the questionable path with the base directory if false.
-
.set_timezone(timezone) ⇒ void
Set the TZ environment variable to use the timezone specified.
-
.timezone ⇒ String
Get the current TZ environment variable.
-
.with_unbundled_env ⇒ void
Determines the correct Bundler environment block method to use and passes the block on to it.
Class Method Details
.add_refinement(mod) ⇒ Object
66 67 68 69 |
# File 'bridgetown-foundation/lib/bridgetown-foundation.rb', line 66 def self.add_refinement(mod, &) Bridgetown::Refinements.include(mod) Bridgetown::WrappedObjectWithRefinements.class_eval(&) end |
.begin! ⇒ Object
Set up the Bridgetown execution environment before attempting to load any plugins or gems prior to a site build
134 135 136 137 138 139 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 134 def begin! ENV["RACK_ENV"] ||= environment Bridgetown::Current.preloaded_configuration = Bridgetown::Configuration::Preflight.new Bridgetown::PluginManager.setup_bundler end |
.build_errors_path ⇒ String
When there’s a build error, error details will be logged to a file which the dev server can read and pass along to the browser.
367 368 369 370 371 372 373 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 367 def build_errors_path File.join( (Bridgetown::Current.site&.config || Bridgetown::Current.preloaded_configuration).root_dir, ".bridgetown-cache", "build_errors.txt" ) end |
.configuration(override = {}) ⇒ Hash
Generate a Bridgetown configuration hash by merging the default options with anything in bridgetown.config.yml, and adding the given options on top.
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 151 def configuration(override = {}) config = Configuration.new override = Configuration.new(override) unless override.delete("skip_config_files") config = config.read_config_files(config.config_files(override)) end # Merge DEFAULTS < bridgetown.config.yml < override # @param obj [Bridgetown::Configuration] Configuration.from(Utils.deep_merge_hashes(config, override)).tap do |obj| set_timezone(obj["timezone"]) if obj["timezone"] # Copy "global" source manifests and initializers into this new configuration if Bridgetown::Current.preloaded_configuration.is_a?(Bridgetown::Configuration::Preflight) obj.source_manifests = Bridgetown::Current.preloaded_configuration.source_manifests if Bridgetown::Current.preloaded_configuration.initializers obj.initializers = Bridgetown::Current.preloaded_configuration.initializers end end Bridgetown::Current.preloaded_configuration = obj end end |
.configure ⇒ Object
248 249 250 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 248 def configure(&) initializer(:init, &) end |
.environment ⇒ Object Also known as: env
Tells you which Bridgetown environment you are building in so you can skip tasks if you need to.
127 128 129 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 127 def environment (ENV["BRIDGETOWN_ENV"] || "development").questionable end |
.initializer(name, prepend: false, replace: false, &block) ⇒ Object
rubocop:todo Metrics
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 208 def initializer(name, prepend: false, replace: false, &block) # rubocop:todo Metrics unless Bridgetown::Current.preloaded_configuration raise "The `#{name}' initializer in #{block.source_location[0]} was called " \ "without a preloaded configuration" end Bridgetown::Current.preloaded_configuration.initializers ||= {} if Bridgetown::Current.preloaded_configuration.initializers.key?(name.to_sym) if replace Bridgetown.logger.warn( "Initializing:", "The previous `#{name}' initializer was replaced by a new initializer" ) else prev_block = Bridgetown::Current.preloaded_configuration.initializers[name.to_sym].block new_block = block block = if prepend proc do |*args, **kwargs| new_block.(*args, **kwargs) prev_block.(*args, **kwargs) end else proc do |*args, **kwargs| prev_block.(*args, **kwargs) new_block.(*args, **kwargs) end end end end Bridgetown::Current.preloaded_configuration.initializers[name.to_sym] = Bridgetown::Configuration::Initializer.new( name: name.to_sym, block:, completed: false ) end |
.load_dotenv(root:) ⇒ Object
Loads ENV configuration via dotenv gem, if available
275 276 277 278 279 280 281 282 283 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 275 def load_dotenv(root:) dotenv_files = [ File.join(root, ".env.#{Bridgetown.env}.local"), (File.join(root, ".env.local") unless Bridgetown.env.test?), File.join(root, ".env.#{Bridgetown.env}"), File.join(root, ".env"), ].compact Dotenv.load(*dotenv_files) end |
.load_tasks ⇒ Object
259 260 261 262 263 264 265 266 267 268 269 270 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 259 def load_tasks require "bridgetown-core/commands/base" unless Bridgetown::Current.preloaded_configuration Bridgetown::Current.preloaded_configuration = Bridgetown::Configuration::Preflight.new end Bridgetown::PluginManager.setup_bundler if Bridgetown::Current.preloaded_configuration.is_a?(Bridgetown::Configuration::Preflight) Bridgetown::Current.preloaded_configuration = Bridgetown.configuration end load File.("bridgetown-core/tasks/bridgetown_tasks.rake", __dir__) end |
.logger ⇒ LogAdapter
Fetch the logger instance for this Bridgetown process.
319 320 321 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 319 def logger @logger ||= LogAdapter.new(LogWriter.new, (ENV["BRIDGETOWN_LOG_LEVEL"] || :info).to_sym) end |
.logger=(writer) ⇒ LogAdapter
Set the log writer. New log writer must respond to the same methods as Ruby’s internal Logger.
329 330 331 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 329 def logger=(writer) @logger = LogAdapter.new(writer, (ENV["BRIDGETOWN_LOG_LEVEL"] || :info).to_sym) end |
.refine(*obj) ⇒ WrappedObjectWithRefinements
Call this method to wrap any object(s) in order to use Foundation’s refinements
58 59 60 61 62 63 64 |
# File 'bridgetown-foundation/lib/bridgetown-foundation.rb', line 58 def self.refine(*obj) if obj.length == 1 WrappedObjectWithRefinements.new(obj[0]) else obj.map { WrappedObjectWithRefinements.new _1 } end end |
.register_command ⇒ Object
Convenience method to register a new Thor command
255 256 257 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 255 def register_command(&) Bridgetown::Commands::Registrations.register(&) end |
.reset_configuration! ⇒ Bridgetown::Configuration::Preflight
Initialize a preflight configuration object, copying initializers and source manifests from a previous standard configuration if necessary. Typically only needed in test suites to reset before a new test.
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 181 def reset_configuration! # rubocop:disable Metrics/AbcSize if Bridgetown::Current.preloaded_configuration.nil? return Bridgetown::Current.preloaded_configuration = Bridgetown::Configuration::Preflight.new end return unless Bridgetown::Current.preloaded_configuration.is_a?(Bridgetown::Configuration) previous_config = Bridgetown::Current.preloaded_configuration new_config = Bridgetown::Configuration::Preflight.new new_config.initializers = previous_config.initializers new_config.source_manifests = previous_config.source_manifests if new_config.initializers new_config.initializers.delete(:init) new_config.initializers.select! do |_k, initializer| next false if initializer.block.source_location[0].start_with?( File.join(previous_config.root_dir, "config") ) initializer.completed = false true end end Bridgetown::Current.preloaded_configuration = new_config end |
.sanitized_path(base_directory, questionable_path) ⇒ String
Ensures the questionable path is prefixed with the base directory and prepends the questionable path with the base directory if false.
342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 342 def sanitized_path(base_directory, questionable_path) return base_directory if base_directory.eql?(questionable_path) clean_path = questionable_path.dup clean_path.insert(0, "/") if clean_path.start_with?("~") clean_path = File.(clean_path, "/") return clean_path if clean_path.eql?(base_directory) # remove any remaining extra leading slashes not stripped away by calling # `File.expand_path` above. clean_path.squeeze!("/") if clean_path.start_with?(base_directory.sub(%r!\z!, "/")) clean_path else clean_path.sub!(%r!\A\w:/!, "/") File.join(base_directory, clean_path) end end |
.set_timezone(timezone) ⇒ void
This method returns an undefined value.
Set the TZ environment variable to use the timezone specified
rubocop:disable Naming/AccessorMethodName
303 304 305 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 303 def set_timezone(timezone) ENV["TZ"] = timezone end |
.timezone ⇒ String
Get the current TZ environment variable
310 311 312 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 310 def timezone ENV["TZ"] end |
.with_unbundled_env ⇒ void
This method returns an undefined value.
Determines the correct Bundler environment block method to use and passes the block on to it.
289 290 291 292 293 294 295 |
# File 'bridgetown-core/lib/bridgetown-core.rb', line 289 def with_unbundled_env(&) if Bundler.bundler_major_version >= 2 Bundler.method(:with_unbundled_env).call(&) else Bundler.method(:with_clean_env).call(&) end end |