class ActiveMocker::Generate
Attributes
display_errors[R]
progress[R]
Public Class Methods
new()
click to toggle source
# File lib/active_mocker/generate.rb, line 6 def initialize check_directory!(:mock_dir) create_mock_dir check_directory!(:model_dir) raise_missing_arg(:model_dir) unless Dir.exist?(config.model_dir) @display_errors = DisplayErrors.new(models_paths.count) end
Public Instance Methods
active_record_models()
click to toggle source
# File lib/active_mocker/generate.rb, line 30 def active_record_models @active_record_models ||= active_record_models_with_files.map(&:first) end
call()
click to toggle source
@return self
# File lib/active_mocker/generate.rb, line 16 def call clean_up progress_init active_record_models_with_files.each do |model, file| write_file(model, file) progress.increment end display_errors.display_errors self end
Private Instance Methods
active_record_models_with_files()
click to toggle source
# File lib/active_mocker/generate.rb, line 69 def active_record_models_with_files @active_record_models_with_files ||= models_paths.map do |file| model = constant_from(model_name_from(file)) [model, file] if model end.compact end
check_directory!(type)
click to toggle source
# File lib/active_mocker/generate.rb, line 38 def check_directory!(type) value = config.send(type) if value.nil? || value.empty? raise_missing_arg(type) end end
clean_up()
click to toggle source
# File lib/active_mocker/generate.rb, line 104 def clean_up delete_mocks unless config.single_model_path end
config()
click to toggle source
# File lib/active_mocker/generate.rb, line 96 def config ActiveMocker::Config end
constant_from(model_name)
click to toggle source
# File lib/active_mocker/generate.rb, line 80 def constant_from(model_name) constant = model_name.constantize return unless constant.ancestors.include?(ActiveRecord::Base) constant rescue NameError, LoadError => e display_errors.wrap_an_exception(e, model_name) nil end
create_mock_dir()
click to toggle source
# File lib/active_mocker/generate.rb, line 100 def create_mock_dir FileUtils.mkdir_p(config.mock_dir) unless Dir.exist?(config.mock_dir) end
delete_mocks()
click to toggle source
# File lib/active_mocker/generate.rb, line 108 def delete_mocks FileUtils.rm Dir.glob(File.join(config.mock_dir, "/**/*_#{config.mock_append_name.underscore}.rb")) end
model_name_from(file)
click to toggle source
# File lib/active_mocker/generate.rb, line 89 def model_name_from(file) FilePathToRubyClass.new( base_path: config.model_dir, class_path: file ).to_s end
model_names()
click to toggle source
# File lib/active_mocker/generate.rb, line 65 def model_names @model_names ||= active_record_models.map(&:name) end
models_paths()
click to toggle source
# File lib/active_mocker/generate.rb, line 76 def models_paths @models_paths ||= Dir.glob(config.single_model_path || File.join(config.model_dir, "**/*.rb")) end
progress_init()
click to toggle source
# File lib/active_mocker/generate.rb, line 61 def progress_init @progress = config.progress_class.create(active_record_models.count) end
raise_missing_arg(type)
click to toggle source
# File lib/active_mocker/generate.rb, line 46 def raise_missing_arg(type) raise ArgumentError, "#{type} is missing a valued value!" end
write_file(model, file)
click to toggle source
# File lib/active_mocker/generate.rb, line 50 def write_file(model, file) writer = FileWriter.new( model: model, file: file, display_errors: display_errors, config: config, model_names: model_names) writer.write! end