module Nanoc::Core::ContractsSupport
Public Class Methods
enabled?()
click to toggle source
# File lib/nanoc/core/contracts_support.rb, line 114 def self.enabled? setup_once end
included(base)
click to toggle source
# File lib/nanoc/core/contracts_support.rb, line 118 def self.included(base) should_enable = setup_once if should_enable unless base.include?(::Contracts::Core) base.include(::Contracts::Core) base.extend(EnabledContracts) base.const_set('C', ::Contracts) end else base.extend(DisabledContracts) base.const_set('C', DisabledContracts) end end
setup_once()
click to toggle source
# File lib/nanoc/core/contracts_support.rb, line 85 def self.setup_once @_contracts_support__setup ||= false return @_contracts_support__should_enable if @_contracts_support__setup @_contracts_support__setup = true contracts_loadable = begin require 'contracts' true rescue LoadError false end # FIXME: Do something better with contracts on Ruby 3.x @_contracts_support__should_enable = contracts_loadable && !RUBY_VERSION.start_with?('3') && !ENV.key?('DISABLE_CONTRACTS') if @_contracts_support__should_enable # FIXME: ugly ::Contracts.const_set('Named', EnabledContracts::Named) ::Contracts.const_set('IterOf', EnabledContracts::IterOf) ::Contracts.const_set('AbsolutePathString', EnabledContracts::AbsolutePathString) warn_about_performance end @_contracts_support__should_enable end
warn_about_performance()
click to toggle source
# File lib/nanoc/core/contracts_support.rb, line 133 def self.warn_about_performance return if ENV.key?('CI') return if ENV.key?('NANOC_DEV_MODE') puts '-' * 78 puts 'A NOTE ABOUT PERFORMANCE:' puts 'The `contracts` gem is loaded, which enables extra run-time checks, but can drastically reduce Nanoc’s performance. The `contracts` gem is intended for development purposes, and is not recommended for day-to-day Nanoc usage.' puts if defined?(Bundler) puts 'To speed up compilation, remove `contracts` from the Gemfile and run `bundle install`.' else puts 'To speed up compilation, either uninstall the `contracts` gem, or use Bundler (https://bundler.io/) with a Gemfile that doesn’t include `contracts`.' end puts '-' * 78 end