Parent

MetricFu::Configuration

Configuration

The Configuration class, as it sounds, provides methods for configuring the behaviour of MetricFu.

Customization for Rails

The Configuration class checks for the presence of a ‘config/environment.rb’ file. If the file is present, it assumes it is running in a Rails project. If it is, it will:

Customization for CruiseControl.rb

The Configuration class checks for the presence of a ‘CC_BUILD_ARTIFACTS’ environment variable. If it’s found it will change the default output directory from the default “tmp/metric_fu to the directory represented by ‘CC_BUILD_ARTIFACTS’

Deprications

The Configuration class checks for several deprecated constants that were previously used to configure MetricFu. These include CHURN_OPTIONS, DIRECTORIES_TO_FLOG, SAIKURO_OPTIONS, and MetricFu::SAIKURO_OPTIONS.

These have been replaced by config.churn, config.flog and config.saikuro respectively.

Public Class Methods

run() click to toggle source

This allows us to have a nice syntax like:

MetricFu.run do |config|
  config.base_directory = 'tmp/metric_fu'
end

See the README for more information on configuration options.

# File lib/base/configuration.rb, line 92
def self.run
  yield MetricFu.configuration
end

Public Instance Methods

add_attr_accessors_to_self() click to toggle source

Searches through the instance variables of the class and creates an attribute accessor on this instance of the Configuration class for each instance variable.

# File lib/base/configuration.rb, line 78
def add_attr_accessors_to_self
  instance_variables.each do |name|
    method_name = name[1..-1].to_sym
    MetricFu::Configuration.send(:attr_accessor, method_name)
  end
end
add_class_methods_to_metric_fu() click to toggle source

Searches through the instance variables of the class and creates a class method on the MetricFu module to read the value of the instance variable from the Configuration class.

# File lib/base/configuration.rb, line 63
def add_class_methods_to_metric_fu
  instance_variables.each do |name|
    method_name = name[1..-1].to_sym
    method =                   def self.#{method_name}                    configuration.send(:#{method_name})                  end
    MetricFu.module_eval(method)
  end
end
is_cruise_control_rb?() click to toggle source
# File lib/base/configuration.rb, line 184
def is_cruise_control_rb?
  !!ENV['CC_BUILD_ARTIFACTS']
end
rails?() click to toggle source

Perform a simple check to try and guess if we’re running against a rails app.

@todo This should probably be made a bit more robust.

# File lib/base/configuration.rb, line 149
def rails?
  @rails = File.exist?("config/environment.rb")
end
reset() click to toggle source

This does the real work of the Configuration class, by setting up a bunch of instance variables to represent the configuration of the MetricFu app.

# File lib/base/configuration.rb, line 99
def reset
  @base_directory = ENV['CC_BUILD_ARTIFACTS'] || 'tmp/metric_fu'
  @scratch_directory = File.join(@base_directory, 'scratch')
  @output_directory = File.join(@base_directory, 'output')
  @data_directory = File.join('tmp/metric_fu', '_data')
  @metric_fu_root_directory = File.join(File.dirname(__FILE__), 
                                                    '..', '..')
  @template_directory =  File.join(@metric_fu_root_directory, 
                                   'lib', 'templates') 
  @template_class = AwesomeTemplate
  set_metrics
  set_graphs
  set_code_dirs
  @flay     = { :dirs_to_flay => @code_dirs,
                :minimum_score => 100,
                :filetypes => ['rb'] } 
  @flog     = { :dirs_to_flog => @code_dirs  }
  @reek     = { :dirs_to_reek => @code_dirs  }
  @roodi    = { :dirs_to_roodi => @code_dirs }
  @saikuro  = { :output_directory => @scratch_directory + '/saikuro', 
                :input_directory => @code_dirs,
                :cyclo => "",
                :filter_cyclo => "0",
                :warn_cyclo => "5",
                :error_cyclo => "7",
                :formater => "text"}
  @churn    = {}
  @stats    = {}
  @rcov     = { :environment => 'test',
                :test_files => ['test/**/*_test.rb', 
                                'spec/**/*_spec.rb'],
                :rcov_opts => ["--sort coverage", 
                               "--no-html", 
                               "--text-coverage",
                               "--no-color",
                               "--profile",
                               "--rails",
                               "--exclude /gems/,/Library/,/usr/,spec"],
                :external => nil
              }
  @rails_best_practices = {}
  @file_globs_to_ignore = []
                               
  @graph_engine = :bluff # can be :bluff or :gchart
end
set_code_dirs() click to toggle source

Add the ‘app’ directory if we’re running within rails.

# File lib/base/configuration.rb, line 172
def set_code_dirs
  if rails?
    @code_dirs = ['app', 'lib']
  else
    @code_dirs = ['lib']
  end
end
set_graphs() click to toggle source
# File lib/base/configuration.rb, line 163
def set_graphs
  if rails?
    @graphs = MetricFu::AVAILABLE_GRAPHS + [:stats]
  else
    @graphs = MetricFu::AVAILABLE_GRAPHS 
  end
end
set_metrics() click to toggle source

Add the :stats task to the AVAILABLE_METRICS constant if we’re running within rails.

# File lib/base/configuration.rb, line 155
def set_metrics
  if rails?
    @metrics = MetricFu::AVAILABLE_METRICS + [:stats, :rails_best_practices]
  else
    @metrics = MetricFu::AVAILABLE_METRICS
  end 
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.