mirego/active_model_serializers_validator

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# 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.