class EngineCart::Configuration
Attributes
options[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/engine_cart/configuration.rb, line 8 def initialize(options = {}) @verbose = options[:verbose] @options = load_configs(Array[options[:config]]).merge(options) end
Public Instance Methods
default_destination()
click to toggle source
# File lib/engine_cart/configuration.rb, line 61 def default_destination '.internal_test_app' end
default_engine_name()
click to toggle source
# File lib/engine_cart/configuration.rb, line 65 def default_engine_name File.basename(Dir.glob('*.gemspec').first, '.gemspec') end
destination()
click to toggle source
Destination to generate the test app into
# File lib/engine_cart/configuration.rb, line 34 def destination options[:destination] end
engine_name()
click to toggle source
Name of the engine we're testing
# File lib/engine_cart/configuration.rb, line 28 def engine_name options[:engine_name] end
extra_fingerprinted_files()
click to toggle source
# File lib/engine_cart/configuration.rb, line 57 def extra_fingerprinted_files options[:extra_fingerprinted_files] end
load_configs(config_files)
click to toggle source
# File lib/engine_cart/configuration.rb, line 14 def load_configs(config_files) config = default_config (default_configuration_paths + config_files.compact).each do |p| path = File.expand_path(p) next unless File.exist? path config.merge!(read_config(path)) end config end
rails_options()
click to toggle source
Additional options when generating a test rails application
# File lib/engine_cart/configuration.rb, line 53 def rails_options Array(options[:rails_options]) end
template()
click to toggle source
Path to a Rails application template
# File lib/engine_cart/configuration.rb, line 40 def template options[:template] end
templates_path()
click to toggle source
Path to test app templates to make available to the test app generator
# File lib/engine_cart/configuration.rb, line 47 def templates_path options[:templates_path] end
verbose?()
click to toggle source
# File lib/engine_cart/configuration.rb, line 69 def verbose? @verbose || (options && !!options.fetch(:verbose, false)) end
Private Instance Methods
convert_keys(hash)
click to toggle source
# File lib/engine_cart/configuration.rb, line 105 def convert_keys(hash) hash.each_with_object({}) { |(k, v), h| h[k.to_sym] = v } end
default_config()
click to toggle source
# File lib/engine_cart/configuration.rb, line 75 def default_config { engine_name: ENV['CURRENT_ENGINE_NAME'] || default_engine_name, destination: ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || default_destination, template: ENV['ENGINE_CART_TEMPLATE'], templates_path: ENV['ENGINE_CART_TEMPLATES_PATH'] || './spec/test_app_templates', rails_options: parse_options(ENV['ENGINE_CART_RAILS_OPTIONS']), extra_fingerprinted_files: [] } end
default_configuration_paths()
click to toggle source
# File lib/engine_cart/configuration.rb, line 109 def default_configuration_paths ['~/.engine_cart.yml', '.engine_cart.yml'] end
parse_options(options)
click to toggle source
Split a string of options into individual options. @example
parse_options('--skip-foo --skip-bar -d postgres --skip-lala') # => ["--skip-foo", "--skip-bar", "-d postgres", "--skip-lala"]
# File lib/engine_cart/configuration.rb, line 90 def parse_options(options) return if options.nil? options.scan(/(--[^\s]+|-[^\s]+\s+[^\s]+)/).flatten end
read_config(config_file)
click to toggle source
# File lib/engine_cart/configuration.rb, line 95 def read_config(config_file) $stdout.puts "Loading configuration from #{config_file}" if verbose? config = YAML.load(ERB.new(IO.read(config_file)).result(binding)) unless config $stderr.puts "Unable to parse config #{config_file}" if verbose? return {} end convert_keys(config) end