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