README.md
# ActiveModel::Serializer::Validator
[![Gem Version](http://img.shields.io/gem/v/active_model_serializers_validator.svg)](https://rubygems.org/gems/active_model_serializers_validator)
[![Code Climate](http://img.shields.io/codeclimate/github/mirego/active_model_serializers_validator.svg)](https://codeclimate.com/github/mirego/active_model_serializers_validator)
[![Build Status](http://img.shields.io/travis/mirego/active_model_serializers_validator.svg)](https://travis-ci.org/mirego/active_model_serializers_validator)
This gem adds JSON schema validations for the JSON output generated by an `ActiveModel::Serializer`.
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'active_model_serializers_validator'
```
## Usage
The gem adds two instance methods (`#valid?` and `#errors`) and one class method (`.json_schema`) to the `ActiveModel::Serializer` class.
### A JSON schema
```json
{
"type": "object",
"$schema": "http://json-schema.org/draft-03/schema",
"id": "#",
"required": false,
"additionalProperties": false,
"properties": {
"favorite_number": {
"type": "integer",
"id": "favorite_number",
"required": true
},
}
}
```
### A serializer
```ruby
class MySerializer < ActiveModel::Serializer
json_schema '/path/to/my/schema.jsonschema'
attribute :favorite_number
end
object = OpenStruct.new(favorite_number: 'what?')
serializer = MySerializer.new(object)
serializer.valid?
# => false
serializer.errors
# => [The property '#/foo' of type String did not match the following type: integer in schema /path/to/my/schema.jsonschema]
```
## License
`ActiveModel::Serializer::Validator` is © 2013-2015 [Mirego](http://www.mirego.com) and may be freely distributed under the [New BSD license](http://opensource.org/licenses/BSD-3-Clause). See the [`LICENSE.md`](https://github.com/mirego/active_model_serializers_validator/blob/master/LICENSE.md) file.
## About Mirego
[Mirego](http://mirego.com) is a team of passionate people who believe that work is a place where you can innovate and have fun. We're a team of [talented people](http://life.mirego.com) who imagine and build beautiful Web and mobile applications. We come together to share ideas and [change the world](http://mirego.org).
We also [love open-source software](http://open.mirego.com) and we try to give back to the community as much as we can.