
Security News
GitHub Actions Pricing Whiplash: Self-Hosted Actions Billing Change Postponed
GitHub postponed a new billing model for self-hosted Actions after developer pushback, but moved forward with hosted runner price cuts on January 1.
valid
Advanced tools
Validator is a simple ruby validation class. You don't use it directly inside your classes like just about every other ruby validation class out there. I chose to implement it in this way so I didn't automatically pollute the namespace of the objects I wanted to validate.
This also solves the problem of validating forms very nicely. Frequently you will have a form that represents many different data objects in your system, and you can pre-validate everything before doing any saving.
Validator is useful for validating the state of any existing ruby object.
object = OpenStruct.new(:email => 'foo@bar.com', :password => 'foobar')
validator = Validation::Validator.new(object)
validator.rule(:email, [:email, :not_empty]) # multiple rules in one line
validator.rule(:password, :not_empty) # a single rule on a line
validator.rule(:password, :length => { :minimum => 3 }) # a rule that takes parameters
if validator.valid?
# save the data somewhere
else
@errors = validator.errors
end
The first paramater can be any message that the object responds to.
If you have a custom rule you need to write, you can create a custom rule class for it:
class MyCustomRule
def error_key
:my_custom_rule
end
def valid_value?(value)
# Logic for determining the validity of the value
end
def params
{}
end
end
A rule class should have the following methods on it:
error_key a symbol to represent the error. This shows up in the errors hash. Must be an underscored_version of the class namevalid_value?(value) the beef of the rule. This is where you determine if the value is valid or notparams the params hash that was passed into the constructorIf you add your custom rule class to the Validation::Rule namespace, you can reference it using a symbol:
validator.rule(:field, :my_custom_rule) # resolves to Validation::Rule::MyCustomRule
validator.rule(:field, :my_custom_rule => { :param => :value })
Otherwise, just pass in the rule class itself:
validator.rule(:field, MyProject::CustomRule)
validator.rule(:field, MyProject::CustomRule => { :param => :value })
You can also create self-contained validation classes if you don't like the dynamic creation approach:
require 'validation'
require 'validation/rule/not_empty'
class MyFormValidator < Validation::Validator
include Validation
rule :email, :not_empty
end
Now you can use this anywhere in your code:
form_validator = MyFormValidator.new(OpenStruct.new(params))
form_validator.valid?
This project conforms to semver.
Have an improvement? Have an awesome rule you want included? Simple!
master branchmaster branchDon't change any version files or gemspec files in your change.
FAQs
Unknown package
We found that valid 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
GitHub postponed a new billing model for self-hosted Actions after developer pushback, but moved forward with hosted runner price cuts on January 1.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.