Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Extend ActiveModel validations, which introduce validations with versions and allows to manage validations of the records dynamically.
With ActiveValidation
instead of storing all validations hardcoded
in the Model, you can also store them in the database. Validation Manifests
are lazy loaded once, and only when they required so it does not
affect the performance.
Ruby 2.4+ ActiveModel ~> 5.0
Supported ORM:
This is the add-on for ActiveModel validations. The gem allows to store
ActiveModel
validations in some backend, like DB.
Each record with ActiveValidation
belongs to
ActiveValidation::Manifest
which holds general information about
the validation, including name
, version
and id
. Assumed, that
ActiveValidation::Manifest
's with the same version are compatible and share
the same validation methods. Folder structure example for model MyModelName
:
.
└── app
└── models
├── my_model_name
│ └── validations
│ └── v1.rb
└── my_model_name.rb
for different versions of the records.
Validation versions are stored in the selected backend.
Validations themselves are stored in ActiveValidation::Check
, 1 validation
per one record. ActiveValidation::Manifest
has many ActiveValidation::Check
's.
Manifest
's and Check
's are immutable by design. Instead of updating or
patching the existed objects the developer should clone and create the new
record.
It is assumed that inside one version manifests are compatible. Verifier version is a border between new version and the existed one, which allows co-existing of both versions at the same time.
To control ActiveValidation::Manifest
's there is ActiveValidation::Verifier
class. Each model with activated ActiveValidation
has one corresponding
ActiveValidation::Verifier
instance (which can easily taken with
MyModelName.active_validation
method). Through this instance user can add or find
Minifest
(s).
Add this line to your application's Gemfile:
gem 'active_validation'
Also will be required create dependent tables in the migration.
create_table :active_validation_manifests do |t|
t.string :name
t.string :version
t.string :base_klass
t.datetime :created_at
end
create_table :active_validation_checks do |t|
t.integer :manifest_id
t.string :type
t.string :argument
t.json :options
t.datetime :created_at
end
ActiveValidation.configuration do |c|
c.orm_adapter = :active_record
end
# app/models/foo
class Foo < ActiveRecord::Base
active_validation
# active_validation do |verifier| # this is a form with optional block
# verifier.manifest = some_manifest # lock manifest to some particular existed manifest
# verifier.version = 42 # lock version
# verifier.orm_adapter = :active_record # ORM adapter name
# end
end
The usage described in special spec. Only this way allows to keep it always up-to-date.
You can manage default values with the configuration:
ActiveValidation.configuration do |c|
c.manifest_name_formatter # You can set custom manifest name generator, see lib/active_validation/formatters/manifest_name_formatter.rb
c.validation_context_formatter # You can set custom validation context generator, see lib/active_validation/formatters/validation_context_formatter.rb
c.orm_adapter # currently supported `active_record`
c.verifier_defaults do |v|
v.validations_module_name # folder with validations versions, default: "Validations"
v.failed_attempt_retry_time # Rate limiter for check of missing Manifest, default: `1 day`
end
end
The gem is available as open source under the terms of the MIT License.
FAQs
Unknown package
We found that activevalidation demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.