Module: Countless::Extensions::ConfigurationHandling
- Extended by:
- ActiveSupport::Concern
- Included in:
- Countless
- Defined in:
- lib/countless/extensions/configuration_handling.rb
Overview
A top-level gem-module extension to handle configuration needs.
rubocop:disable Metrics/BlockLength – because this is how an
+ActiveSupport::Concern+ looks like
Class Method Summary collapse
-
.configuration ⇒ Configuration
Retrieve the current configuration object.
-
.configure {|configuration| ... } ⇒ Object
Configure the concern by providing a block which takes care of this task.
-
.reset_configuration! ⇒ Object
Reset the current configuration with the default one.
-
.statistic_directories ⇒ Array<Hash{Symbol => Mixed}>
Get an assembled list of directories which should be checked for code statistics.
Class Method Details
.configuration ⇒ Configuration
Retrieve the current configuration object.
16 17 18 |
# File 'lib/countless/extensions/configuration_handling.rb', line 16 def configuration @configuration ||= Configuration.new end |
.configure {|configuration| ... } ⇒ Object
Configure the concern by providing a block which takes care of this task. Example:
Countless.configure do |conf|
# conf.xyz = [..]
end
26 27 28 |
# File 'lib/countless/extensions/configuration_handling.rb', line 26 def configure yield(configuration) end |
.reset_configuration! ⇒ Object
Reset the current configuration with the default one.
31 32 33 |
# File 'lib/countless/extensions/configuration_handling.rb', line 31 def reset_configuration! @configuration = Configuration.new end |
.statistic_directories ⇒ Array<Hash{Symbol => Mixed}>
Get an assembled list of directories which should be checked for code statistics.
rubocop:disable Metrics/MethodLength – because of the configuration
assembling
rubocop:disable Metrics/AbcSize – ditto rubocop:disable Metrics/CyclomaticComplexity – ditto
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 75 |
# File 'lib/countless/extensions/configuration_handling.rb', line 47 def statistic_directories conf = configuration pattern_suffix = "/**/*.{#{conf.stats_file_extensions.join(',')}}" res = conf.stats_base_directories.deep_dup conf.stats_app_object_types.each do |type| one_type = type.singularize.titleize many_types = type.pluralize.titleize res << { name: many_types, dir: "app/#{type}" } res << { name: "#{one_type} tests", dir: "test/#{type}", test: true } res << { name: "#{one_type} specs", dir: "specs/#{type}", test: true } end res.each do |cur| # Add the configured base dir, when we hit a relative dir config cur[:dir] = "#{conf.base_path}/#{cur[:dir]}" \ unless (cur[:dir] || '').start_with? '/' # Add the default pattern, when no user configured pattern # is present cur[:pattern] ||= "#{cur[:dir]}#{pattern_suffix}" # Fallback to regular code, when not otherwise configured cur[:test] ||= false end res.sort_by { |cur| [cur[:test].to_s, cur[:name]] } end |