Sha256: 31ccd6793daa9319881b47f7ba1c43713ffc04bf08d9ab083cb54fabff622d2a

Contents?: true

Size: 1.51 KB

Versions: 6

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

module UltraSettings
  # Railtie to automatically configure settings for Rails applications.
  # By default this will automatically load any configuration classes in the
  # app/configurations directory. This can be customized by setting the
  # `config.ultra_settings.auto_load_directories` option.
  class Railtie < Rails::Railtie
    config.ultra_settings = ActiveSupport::OrderedOptions.new
    config.ultra_settings.auto_load_directories = [File.join("app", "configurations")]

    config.before_configuration do
      UltraSettings.yaml_config_env = Rails.env
      UltraSettings.yaml_config_path = Rails.root.join("config")
    end

    # Automatically register any configuration classes in the app/configurations
    # directory. The path to load can be customized by setting the
    # `config.ultra_settings.auto_load_directory` option.
    config.after_initialize do
      Array(Rails.application.config.ultra_settings.auto_load_directories).each do |directory|
        next unless directory

        app_config_dir = Rails.root.join(directory)
        app_config_dir.glob("**/*_configuration.rb").each do |file_path|
          relative_path = file_path.relative_path_from(app_config_dir).to_s
          class_name = relative_path.chomp(".rb").classify
          unless UltraSettings.added?(class_name)
            config_name = class_name.delete_suffix("Configuration").underscore.tr("/", "_")
            UltraSettings.add(config_name, class_name)
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ultra_settings-2.4.1 lib/ultra_settings/railtie.rb
ultra_settings-2.4.0 lib/ultra_settings/railtie.rb
ultra_settings-2.3.0 lib/ultra_settings/railtie.rb
ultra_settings-2.2.0 lib/ultra_settings/railtie.rb
ultra_settings-2.1.0 lib/ultra_settings/railtie.rb
ultra_settings-2.0.0 lib/ultra_settings/railtie.rb