Module: RubyCms::Settings
- Defined in:
- lib/ruby_cms/settings.rb
Constant Summary collapse
- IMPORT_SENTINEL_KEY =
"__internal_initializer_import_v1"
Class Method Summary collapse
- .all ⇒ Object
- .ensure_defaults! ⇒ Object
- .get(key, default: nil) ⇒ Object
-
.import_initializer_values!(force: false) ⇒ Object
Imports initializer values for any key that exists in SettingsRegistry and is explicitly set on config.ruby_cms.
- .imported_from_initializer? ⇒ Boolean
- .set(key, value) ⇒ Object
Class Method Details
.all ⇒ Object
36 37 38 39 40 |
# File 'lib/ruby_cms/settings.rb', line 36 def all return {} unless preference_table_available? RubyCms::Preference.all_as_hash end |
.ensure_defaults! ⇒ Object
31 32 33 34 |
# File 'lib/ruby_cms/settings.rb', line 31 def ensure_defaults! RubyCms::SettingsRegistry.seed_defaults! RubyCms::Preference.ensure_defaults! end |
.get(key, default: nil) ⇒ Object
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/ruby_cms/settings.rb', line 10 def get(key, default: nil) k = key.to_s pref = fetch_preference(k) return pref.typed_value if pref entry = RubyCms::SettingsRegistry.fetch(k) return entry.default unless entry.nil? default end |
.import_initializer_values!(force: false) ⇒ Object
Imports initializer values for any key that exists in SettingsRegistry and is explicitly set on config.ruby_cms.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/ruby_cms/settings.rb', line 44 def import_initializer_values!(force: false) return skipped_result("preferences table unavailable") unless preference_table_available? ensure_defaults! return skipped_result("already imported") if imported_from_initializer? && !force config = ruby_cms_config return skipped_result("ruby_cms config unavailable") if config.nil? imported_keys = [] RubyCms::SettingsRegistry.each do |entry| key = entry.key.to_sym next unless config.respond_to?(key) value = config.public_send(key) next if value.nil? set(key, value) imported_keys << entry.key end mark_imported!(imported_keys) { skipped: false, imported_count: imported_keys.size, imported_keys: imported_keys } rescue StandardError => e skipped_result(e.) end |
.imported_from_initializer? ⇒ Boolean
78 79 80 81 82 83 84 |
# File 'lib/ruby_cms/settings.rb', line 78 def imported_from_initializer? return false unless preference_table_available? RubyCms::Preference.exists?(key: IMPORT_SENTINEL_KEY) rescue StandardError false end |
.set(key, value) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/ruby_cms/settings.rb', line 21 def set(key, value) raise "Settings table not available yet" unless preference_table_available? k = key.to_s entry = RubyCms::SettingsRegistry.fetch(k) coerced = coerce_by_entry(value, entry) RubyCms::Preference.set(k, coerced) end |