Skip to content

Split validation via dry-rb into seperate gem #276

@pfeiffer

Description

@pfeiffer

Hi!

Since version 2.1 config supports validation via dry-rb. Unfortunately this dependency results in a quite high memory usage.

Output using derailed bundle:mem:

 rails/all: 25.1523 MiB
    rails: 9.4883 MiB
       ...
 config: 7.1172 MiB
    config/validation/schema: 6.6563 MiB (Also required by: config/validation/schema)
      dry-schema: 6.6367 MiB
        dry/schema: 6.6211 MiB
          dry/schema/dsl: 6.5039 MiB
            dry/schema/config: 4.3203 MiB (Also required by: dry/schema/rule_applier)
              dry/schema/type_container: 3.8398 MiB (Also required by: dry/schema/processor)
                dry/types: 3.4727 MiB (Also required by: dry/schema/types)
                  dry/types/nominal: 1.8398 MiB
                    dry/types/builder: 1.0703 MiB
                      dry/types/constrained: 0.707 MiB
                        dry/types/constraints: 0.6523 MiB
                          dry/logic/rule_compiler: 0.5977 MiB (Also required by: dry/schema/compiler)
                            dry/logic/rule: 0.5234 MiB (Also required by: dry/logic/rule/predicate)
                              dry/logic/operations: 0.4023 MiB
                    dry/types/array: 0.3008 MiB
                  dry/types/core: 0.6758 MiB
                  dry/types/inflector: 0.3984 MiB
                    dry/inflector: 0.3242 MiB
                dry/container: 0.3555 MiB (Also required by: dry-container, dry/types/container)
            dry/schema/macros: 1.0977 MiB
              dry/schema/macros/optional: 0.6094 MiB
                dry/schema/macros/key: 0.582 MiB (Also required by: dry/schema/macros/required)
                  dry/schema/processor: 0.4922 MiB (Also required by: dry/schema/dsl, dry/schema/params)
                    dry/schema/rule_applier: 0.4531 MiB (Also required by: dry/schema/dsl)
                      dry/schema/message_compiler: 0.3125 MiB

In our app with quite a lot of dependencies, this makes config the second most memory hungry gem after rails.

Would it be an idea to split the validation feature into a separate optional gem, that could be included if this functionality is wanted? This would cut down significantly on the memory impact of including the core config gem making inclusion of dry-rb optional for the developer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions