class Ez::Settings::Backend::ActiveRecord
Public Instance Methods
read()
click to toggle source
# File lib/ez/settings/backend/active_record.rb, line 8 def read return {} unless try_db_connection && check_settings_table ActiveRecordStore.all.each_with_object({}) do |settings, hsh| hsh[settings.group] ||= {} hsh[settings.group][settings.key] = settings.value end.deep_symbolize_keys end
write(data)
click to toggle source
# File lib/ez/settings/backend/active_record.rb, line 17 def write(data) return unless try_db_connection && check_settings_table group = data.keys[0] pairs = data.values[0] existing_settings = ActiveRecordStore.where(group: group, key: pairs.keys) pairs.map do |key, value| record(existing_settings, key, value) || ActiveRecordStore.new(group: group, key: key, value: value) end.each(&:save!) end
Private Instance Methods
check_settings_table()
click to toggle source
# File lib/ez/settings/backend/active_record.rb, line 45 def check_settings_table settings_table = Ez::Settings.config.active_record_table_name || :ez_settings if ::ActiveRecord::Base.connection.data_source_exists?(settings_table) return true end message("Table #{settings_table} does not exists. Please, check migrations") false end
message(txt, level = 'WARN')
click to toggle source
# File lib/ez/settings/backend/active_record.rb, line 55 def message(txt, level = 'WARN') STDOUT.puts("[#{level}] Ez::Settings: #{txt}") end
record(existing_settings, key, value)
click to toggle source
# File lib/ez/settings/backend/active_record.rb, line 30 def record(existing_settings, key, value) record = existing_settings.find { |r| r.key == key.to_s } return unless record record.tap { |r| r.value = value } end
try_db_connection()
click to toggle source
# File lib/ez/settings/backend/active_record.rb, line 38 def try_db_connection ::ActiveRecord::Base.connection rescue ::ActiveRecord::NoDatabaseError message('Database does not exist') false end