🃏 An extension to ActiveModel::Serializer that validates serializers output against a JSON schema
Clone or download
Latest commit a481b4a Jan 14, 2015
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Bump version to 1.2 Jan 14, 2015
spec Use ruby-1.9 hash notation Aug 3, 2013
.gitignore Initial commit May 24, 2013
.rspec Add tests for valid? and valid_against_schema? May 25, 2013
.travis.yml Keep on testing on 1.9.3 Jan 14, 2015
Gemfile Initial commit May 24, 2013
LICENSE.md Update copyright year Jan 14, 2015
README.md Update copyright year Jan 14, 2015
Rakefile Use ruby-1.9 hash notation Aug 3, 2013
active_model_serializers_validator.gemspec Drop support for Rails 3 Jan 14, 2015

README.md

ActiveModel::Serializer::Validator

Gem Version Code Climate Build Status

This gem adds JSON schema validations for the JSON output generated by an ActiveModel::Serializer.

Installation

Add this line to your application's Gemfile:

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

{
  "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

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 and may be freely distributed under the New BSD license. See the LICENSE.md file.

About Mirego

Mirego 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 who imagine and build beautiful Web and mobile applications. We come together to share ideas and change the world.

We also love open-source software and we try to give back to the community as much as we can.