Class: Settings
- Inherits:
- BasicObject
- Defined in:
- lib/rails_admin_settings/settings.rb
Overview
we are inheriting from BasicObject so we don’t get a bunch of methods from Kernel or Object
Constant Summary collapse
- DELEGATE =
[:puts, :p, :block_given?].freeze
- @@file_uploads_supported =
false
- @@file_uploads_engine =
false
- @@namespaces =
{}
- @@mutex =
::Mutex.new
- @@ns_default =
'main'
- @@ns_fallback =
nil
Class Method Summary collapse
- .apply_defaults!(file, verbose = false) ⇒ Object
- .create_setting(key, value, options = {}) ⇒ Object
- .destroy_all! ⇒ Object
- .get(key, options = {}) ⇒ Object
- .get_default_ns ⇒ Object
- .method_missing(name, *args, &block) ⇒ Object
- .ns(name, options = {}) ⇒ Object
- .respond_to_missing?(name, include_private = false) ⇒ Boolean
- .root_file_path ⇒ Object
- .save_default(key, value, options = {}) ⇒ Object
- .set(key, value = nil, options = {}) ⇒ Object
- .table_exists? ⇒ Boolean
- .unload! ⇒ Object
Class Method Details
.apply_defaults!(file, verbose = false) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/rails_admin_settings/settings.rb', line 69 def apply_defaults!(file, verbose = false) if File.file?(file) puts "[settings] Loading from #{file}".freeze if verbose yaml = YAML.load(File.read(file), safe: true) yaml.each_pair do |namespace, vals| vals.symbolize_keys! n = ns(namespace) vals.each_pair do |key, val| val.symbolize_keys! if !val[:kind].nil? && (val[:kind] == 'file' || val[:kind] == 'image') unless @@file_uploads_supported ::Kernel.raise ::RailsAdminSettings::PersistenceException, "Fatal: setting #{key} is #{val[:type]} but file upload engine is not detected".freeze end value = File.open(root_file_path.join(val.delete(:value))) else value = val.delete(:value) end puts "#{key} - default '#{value}' current '#{Settings.get(key).raw}'".freeze if verbose n.set(key, value, val.merge(overwrite: false)) end n.unload! end end end |
.create_setting(key, value, options = {}) ⇒ Object
108 109 110 |
# File 'lib/rails_admin_settings/settings.rb', line 108 def create_setting(key, value, = {}) set(key, nil, .merge(overwrite: false)) end |
.destroy_all! ⇒ Object
56 57 58 59 |
# File 'lib/rails_admin_settings/settings.rb', line 56 def destroy_all! RailsAdminSettings::Setting.destroy_all unload! end |
.get(key, options = {}) ⇒ Object
94 95 96 97 |
# File 'lib/rails_admin_settings/settings.rb', line 94 def get(key, = {}) .symbolize_keys! ns([:ns], ).get(key, ) end |
.get_default_ns ⇒ Object
39 40 41 |
# File 'lib/rails_admin_settings/settings.rb', line 39 def get_default_ns ns(nil, fallback: @@ns_fallback) end |
.method_missing(name, *args, &block) ⇒ Object
112 113 114 115 |
# File 'lib/rails_admin_settings/settings.rb', line 112 def method_missing(name, *args, &block) return ::Kernel.send(name, *args, &block) if DELEGATE.include?(name) get_default_ns.__send__(name, *args, &block) end |
.ns(name, options = {}) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rails_admin_settings/settings.rb', line 22 def ns(name, = {}) .symbolize_keys! if name.nil? || name == @@ns_default name = @@ns_default.to_s else name = name.to_s end if .key?(:type) [:kind] = .delete(:type) end @@mutex.synchronize do @@namespaces[name] ||= ::RailsAdminSettings::Namespaced.new(name.to_s) end fallback = .key?(:fallback) ? [:fallback] : @@ns_fallback ::RailsAdminSettings::Fallback.new(@@namespaces[name], fallback) end |
.respond_to_missing?(name, include_private = false) ⇒ Boolean
117 118 119 |
# File 'lib/rails_admin_settings/settings.rb', line 117 def respond_to_missing?(name, include_private = false) DELEGATE.include?(name) or super end |
.root_file_path ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/rails_admin_settings/settings.rb', line 61 def root_file_path if Object.const_defined?('Rails') Rails.root else Pathname.new(File.dirname(__FILE__)).join('../..') end end |
.save_default(key, value, options = {}) ⇒ Object
104 105 106 |
# File 'lib/rails_admin_settings/settings.rb', line 104 def save_default(key, value, = {}) set(key, value, .merge(overwrite: false)) end |
.set(key, value = nil, options = {}) ⇒ Object
99 100 101 102 |
# File 'lib/rails_admin_settings/settings.rb', line 99 def set(key, value = nil, = {}) .symbolize_keys! ns([:ns], ).set(key, value, ) end |
.table_exists? ⇒ Boolean
43 44 45 |
# File 'lib/rails_admin_settings/settings.rb', line 43 def table_exists? RailsAdminSettings.mongoid? || RailsAdminSettings::Setting.table_exists? end |
.unload! ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/rails_admin_settings/settings.rb', line 47 def unload! @@mutex.synchronize do @@namespaces.values.map(&:unload!) @@namespaces = {} @@ns_default = 'main' @@ns_fallback = nil end end |