Sha256: 9930449ab2bf31b92eedeef297503fcc9ae424c6a27b3cde978b586400c37d60

Contents?: true

Size: 1.03 KB

Versions: 43

Compression:

Stored size: 1.03 KB

Contents

class Releaf::Settings::Register
  include Releaf::Service
  attribute :settings, Array

  def call
    settings.each do|item|
      register(normalize(item))
    end
  end

  def normalize(item)
    item[:type] = (item[:type] || :text).to_sym
    dissallowed_keys = item.keys - allowed_keys

    raise Releaf::Error, "Unsupported settings type: #{item[:type]}" unless settings_class.supported_types.include?(item[:type])
    raise Releaf::Error, "Dissallowed settings keys: #{dissallowed_keys}" if dissallowed_keys.present?

    item
  end

  def allowed_keys
    [:key, :default, :type, :description]
  end

  def register(item)
    settings_class.registry.update(item[:key] => item)
    settings_class[item[:key]] = item[:default] if write_default?(item)
  end

  def write_default?(item)
    table_exists? && !settings_class.find_by(var: item[:key]).present?
  end

  def table_exists?
    begin
      settings_class.table_exists?
    rescue ActiveRecord::NoDatabaseError
      false
    end
  end

  def settings_class
    Releaf::Settings
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
releaf-core-3.1.0 lib/releaf/settings/register.rb
releaf-core-3.0.3 lib/releaf/settings/register.rb
releaf-core-3.0.2 lib/releaf/settings/register.rb
releaf-core-3.0.1 lib/releaf/settings/register.rb
releaf-core-3.0.0 lib/releaf/settings/register.rb
releaf-core-2.2.1 app/lib/releaf/settings/register.rb
releaf-core-2.2.0 app/lib/releaf/settings/register.rb
releaf-core-2.1.2 app/lib/releaf/settings/register.rb
releaf-core-2.1.1 app/lib/releaf/settings/register.rb
releaf-core-2.1.0 app/lib/releaf/settings/register.rb
releaf-core-2.0.1 app/lib/releaf/settings/register.rb
releaf-core-2.0.0 app/lib/releaf/settings/register.rb
releaf-core-1.1.22 app/lib/releaf/settings/register.rb
releaf-core-1.1.21 app/lib/releaf/settings/register.rb
releaf-core-1.1.20 app/lib/releaf/settings/register.rb
releaf-core-1.1.19 app/lib/releaf/settings/register.rb
releaf-core-1.1.18 app/lib/releaf/settings/register.rb
releaf-core-1.1.17 app/lib/releaf/settings/register.rb
releaf-core-1.1.16 app/lib/releaf/settings/register.rb
releaf-core-1.1.15 app/lib/releaf/settings/register.rb