class Settingify::DbSyncer

Syncs defined settings with DB.

Very useful for copying defined settings in initializer to DB with goal for ability to edit through admin panel.

You may call this class manually in rails console or use built-in rake task: bundle exec rake settingify:sync

Syncing means adding new DB entries for settings which not exists yet.

Public Instance Methods

call() click to toggle source
# File lib/settingify/db_syncer.rb, line 16
def call
  settings_list.each(&method(:process_setting))
end

Private Instance Methods

add_record_for(setting) click to toggle source
# File lib/settingify/db_syncer.rb, line 35
def add_record_for(setting)
  values = create_value_parameters(setting.default)
  Settingify::Setting.create values.merge(key: setting.name)
end
create_value_parameters(default) click to toggle source
# File lib/settingify/db_syncer.rb, line 42
def create_value_parameters(default)
  if Settingify.config.localization.active
    Settingify.config.localization.available_locales.each_with_object({}) do |locale, hash|
      hash["value_#{locale}"] = default
    end
  else
    {value: default}
  end
end
exists_in_db?(setting) click to toggle source
# File lib/settingify/db_syncer.rb, line 31
def exists_in_db?(setting)
  Settingify::Setting.where(key: setting.name).any?
end
process_setting(setting) click to toggle source
# File lib/settingify/db_syncer.rb, line 26
def process_setting(setting)
  return if exists_in_db?(setting)
  add_record_for setting
end
settings_list() click to toggle source
# File lib/settingify/db_syncer.rb, line 22
def settings_list
  Settingify.registered_settings
end