Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validator lookup precompilation #63

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Commits on Mar 20, 2019

  1. Validator lookup precompilation

    This adds a `precompile_validator_lookup` flag (defaulting to false) to
    `use Vex.Struct`.
    
    This changes behavior as follows:
    * a module attribute (@precompiled_validator_lookup) is initialized for the struct that holds a lookup data structure
    * calls to `validates :attribute, <validations>` proactively look up the
    validator AT COMPILE TIME and add them to the lookup data structure
    * At runtime, the expensive validator lookup is then skipped in favor of just performing a Map fetch from the precompiled
    validator lookup datastructure.
    jfornoff committed Mar 20, 2019
    Configuration menu
    Copy the full SHA
    b299638 View commit details
    Browse the repository at this point in the history

Commits on Mar 21, 2019

  1. Configuration menu
    Copy the full SHA
    13ee888 View commit details
    Browse the repository at this point in the history
  2. Vex.Struct: Fix precompilation of plain function validators

    It is allowed to state `validates :attribute, &myfunction/1`.
    This special case is expanded to `validates :attribute, by:
    &myfunction/1` during the validation at runtime.
    
    Therefore, we need to cache the `:by` validator if we encounter a
    function.
    jfornoff committed Mar 21, 2019
    Configuration menu
    Copy the full SHA
    486c255 View commit details
    Browse the repository at this point in the history