Skip to content

Configuration files #1

Description

@linqueta

About configuration or settings files, my suggestion are these:

For core settings, we can have a settings.yml, like:

Path: config/activemessage/settings.yml

settings:
  aws:
    access_key_id: '<%= ENV['AWS_ACCESS_KEY_ID'] %>'
    secret_key: '<%= ENV['AWS_SECRET_KEY'] %>'
    region: '<%= ENV['AWS_REGION'] %>'
    account_id: '<%= ENV['AWS_ACCOUNT_ID'] %>'
    # Any kind of things that others gem for this organization needs
default:
  queues:
    # Settings for all queues
  topics:
    # Settings for all topics

For queues:

Path: Path: config/activemessage/queues/*.yml

default:
  queues:
    # Settings for all queues in this file
  topics:
    # Settings for all topics in this file
queues:
  - ...

For topics:

Path: Path: config/activemessage/topics/*.yml

default:
  queues:
    # Settings for all queues in this file
  topics:
    # Settings for all topics in this file
queues:
  - ...

About Configuration class, I really think that's it have to be open for others gems of this organization, so, this gems will can write data there.

My suggestion is something like that:

module ActiveMessage
  class << self
    def self.configurations
      @configurations ||= build_configurations!
    end

    private

    def build_configurations!
      # Call Reader and build configurations...
    end
  end
end

module ActiveMessage
  class Configuration
    attr_accessor :kind, :data

    def initialize
      @nested = []
    end

    def add_configuration(configuration)
      @nested << configuration
    end
  end
end

Using this way, we can have some kinds, like:

  • aws
  • queue
  • topic
  • subscription
  • default-queue
  • default-topic

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions