Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/riboseinc/uri_format_validator
Validate URL for Rails
https://github.com/riboseinc/uri_format_validator
rails rails-validations
Last synced: about 2 months ago
JSON representation
Validate URL for Rails
- Host: GitHub
- URL: https://github.com/riboseinc/uri_format_validator
- Owner: riboseinc
- License: mit
- Created: 2017-05-12T02:23:08.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-21T06:43:57.000Z (about 2 years ago)
- Last Synced: 2024-10-14T02:49:38.154Z (3 months ago)
- Topics: rails, rails-validations
- Language: Ruby
- Size: 175 KB
- Stars: 3
- Watchers: 6
- Forks: 2
- Open Issues: 18
-
Metadata Files:
- Readme: README.adoc
- Changelog: CHANGELOG.adoc
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
= UriFormatValidator
image:https://img.shields.io/gem/v/uri_format_validator.svg[
Gem Version, link="https://rubygems.org/gems/uri_format_validator"]
image:https://img.shields.io/travis/riboseinc/uri_format_validator/master.svg[
Build Status, link="https://travis-ci.org/riboseinc/uri_format_validator"]
image:https://img.shields.io/codeclimate/github/riboseinc/uri_format_validator.svg[
"Code Climate", link="https://codeclimate.com/github/riboseinc/uri_format_validator"]
image:https://img.shields.io/codecov/c/github/riboseinc/uri_format_validator.svg[
"Test Coverage", link="https://codecov.io/gh/riboseinc/uri_format_validator"]== Introduction
This gem provides URI field validator for Rails' Active Model.
UriFormatValidator requires Active Model 4+. It is tested against MRI 2.2.2+,
JRuby, and Rubinius in their recent versions.== Getting started
Add this line to your application's Gemfile:
[source,ruby]
----
gem 'uri_format_validator'
----Then install by executing `bundle install`. You may now define validations
in your models, like that:[source,ruby]
----
class User < ActiveRecord::Base
validates :home_site_url, uri: true
end
----For Rails 6, you may need to specify the namespace like that:
[source,ruby]
----
class User < ActiveRecord::Base
validates :home_site_url, 'uri_format_validator/validators/uri': true,
end
----For your convenience, an old-fashioned validation helper is also provided:
[source,ruby]
----
class User < ActiveRecord::Base
validates_uri_format_of :home_site_url
end
----== Validation options
=== URI component constraints
You can specify constraints on URI components: scheme, authority, path, query,
and fragment.[source,ruby]
----
validates :home_site_url, uri: { scheme: /https?/ }
validates :home_site_url, uri: { scheme: %w[ssh telnet] }validates :home_site_url, uri: { authority: /\.example\./ }
validates :home_site_url, uri: { authority: %w[example.com example.test] }# require path component (`/` is not enough)
validates :home_site_url, uri: { path: true }
# disallow presence of path component
validates :home_site_url, uri: { path: false }
# match path against regular expression
validates :home_site_url, uri: { path: /regexp/ }# require query component
validates :home_site_url, uri: { query: true }
# disallow presence of query component
validates :home_site_url, uri: { query: false }# require fragment component
validates :home_site_url, uri: { fragment: true }
# disallow presence of fragment component
validates :home_site_url, uri: { fragment: false }
----When `scheme` option is unspecified, only http and https are allowed.
=== Relative URIs
By default, only absolute URIs are valid. Specify `authority: false` option
to allow relative and disallow absolute URLs:[source,ruby]
----
validates :home_site_url, uri: { authority: false }
----=== Reachable URLs
With `retrievable` options, you can ensure that URL indeed points to some
resource. A HTTP HEAD request will be performed to that URL, and it must result
with 2xx status code. Otherwise, given value is considered invalid.[source,ruby]
----
validates :home_site_url, uri: { retrievable: true }
----=== Error messages
You can also override the default error message:
[source,ruby]
----
validates :my_url_attribute, uri: true, message: 'is not a valid URL'
----Alternatively, you can provide your own localization string for
`errors.messages.invalid_uri` key.== Development
After checking out the repo, run `bin/setup` to install dependencies.
Then, run `rake spec` to run the tests. You can also run `bin/console`
for an interactive prompt that will allow you to experiment.To install this gem onto your local machine, run
`bundle exec rake install`. To release a new version, update the version
number in `version.rb`, and then run `bundle exec rake release`, which
will create a git tag for the version, push git commits and tags, and
push the `.gem` file to https://rubygems.org[rubygems.org].Documentation for this gem is hosted at
Relish[https://relishapp.com/ribose/uri-format-validator/docs].To upload documentation, run `relish push ribose/uri-format-validator`.
== Contributing
Bug reports and pull requests are welcome on GitHub at
https://github.com/riboseinc/uri_format_validator. This project is intended to
be a safe, welcoming space for collaboration, and contributors are
expected to adhere to the http://contributor-covenant.org[Contributor
Covenant] code of conduct.== License
The gem is available as open source under the terms of the
http://opensource.org/licenses/MIT[MIT License].