Sha256: 541968428fbcda8a97e209e4217b3b180a697f0c1ef411d6910b82899f47b2d7

Contents?: true

Size: 1.38 KB

Versions: 5

Compression:

Stored size: 1.38 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|
          config_name = file_path.basename("_configuration.rb")
          class_name = file_path.relative_path_from(app_config_dir).to_s.chomp(".rb").classify
          UltraSettings.add(config_name, class_name)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ultra_settings-1.1.2 lib/ultra_settings/railtie.rb
ultra_settings-1.1.1 lib/ultra_settings/railtie.rb
ultra_settings-1.1.0 lib/ultra_settings/railtie.rb
ultra_settings-1.0.1 lib/ultra_settings/railtie.rb
ultra_settings-1.0.0 lib/ultra_settings/railtie.rb