class DbToFile::Uploader
Public Instance Methods
force_changed()
click to toggle source
# File lib/db_to_file/uploader.rb, line 17 def force_changed write_changed_objects_to_db end
force_upload()
click to toggle source
# File lib/db_to_file/uploader.rb, line 13 def force_upload write_objects_to_db end
upload(commit_message)
click to toggle source
# File lib/db_to_file/uploader.rb, line 3 def upload(commit_message) if can_continue? invoke_unloader end if can_continue? write_objects_to_db update_code_version(commit_message) end end
Private Instance Methods
build_objects(changed_only = false)
click to toggle source
# File lib/db_to_file/uploader.rb, line 54 def build_objects(changed_only = false) objects = [] files = changed_only ? (version_controller.get_modified_file_list & read_files) : read_files files.each do |model_field_file| data_segments = extract_data_segments(model_field_file) model = data_segments[:model] # find existing object object = objects.detect do |existing_object| existing_object.class == model && existing_object.id == data_segments[:id] end # build new object unless object object = model.find_by_id(data_segments[:id]) || model.new(id: data_segments[:id]) objects << object end # set field-value to model update_object_with_field_value(object, data_segments[:field], model_field_file) end objects end
can_continue?()
click to toggle source
# File lib/db_to_file/uploader.rb, line 26 def can_continue? !merge_conflicts_present? end
changed_objects()
click to toggle source
# File lib/db_to_file/uploader.rb, line 50 def changed_objects @changed_objects ||= build_objects(true) end
extract_data_segments(model_field_file)
click to toggle source
# File lib/db_to_file/uploader.rb, line 85 def extract_data_segments(model_field_file) matches = model_field_file.split('/').last(3) { model: matches[0].singularize.classify.constantize, id: matches[1].split('_').last.to_i, field: strip_extension(matches[2]) } end
file_value(model_field_file)
click to toggle source
# File lib/db_to_file/uploader.rb, line 81 def file_value(model_field_file) File.read(model_field_file) end
files_in_dir(folder)
click to toggle source
# File lib/db_to_file/uploader.rb, line 99 def files_in_dir(folder) files = Dir.entries(folder) found_files = [] files.each do |file| full_file = File.join([folder, file]) if File.directory?(full_file) && file[0] != '.' subdir = File.join(folder, file) files_in_dir(subdir).each do |subdirfile| found_files << subdirfile end end if File.file?(full_file) found_files << full_file end end found_files end
invoke_unloader()
click to toggle source
# File lib/db_to_file/uploader.rb, line 22 def invoke_unloader Unloader.new.unload end
merge_conflicts_present?()
click to toggle source
# File lib/db_to_file/uploader.rb, line 30 def merge_conflicts_present? version_controller.merge_conflicts_present? end
objects()
click to toggle source
# File lib/db_to_file/uploader.rb, line 46 def objects @objects ||= build_objects end
read_files()
click to toggle source
# File lib/db_to_file/uploader.rb, line 95 def read_files files_in_dir(File.join('db', 'db_to_file')) end
strip_extension(file_with_extension)
click to toggle source
# File lib/db_to_file/uploader.rb, line 124 def strip_extension(file_with_extension) file_with_extension.split('.')[0] end
update_code_version(commit_message)
click to toggle source
# File lib/db_to_file/uploader.rb, line 42 def update_code_version(commit_message) version_controller.update_code_version(commit_message) end
update_object_with_field_value(object, field, model_field_file)
click to toggle source
# File lib/db_to_file/uploader.rb, line 76 def update_object_with_field_value(object, field, model_field_file) value = file_value(model_field_file) DbToFile::ValuesNormalizer::ValueIntoObject.new(object).normalize(field, value) end
version_controller()
click to toggle source
# File lib/db_to_file/uploader.rb, line 119 def version_controller @version_controller ||= VersionController.new end
write_changed_objects_to_db()
click to toggle source
# File lib/db_to_file/uploader.rb, line 38 def write_changed_objects_to_db changed_objects.each(&:save!) end
write_objects_to_db()
click to toggle source
# File lib/db_to_file/uploader.rb, line 34 def write_objects_to_db objects.each(&:save!) end