json_schema_rails 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6815f00fc76b0d36cdff144949a31a27bfc1713b
4
- data.tar.gz: 3f8ef54b094edc0b14bacb96857ea4ef367da63b
3
+ metadata.gz: 30365db9f1e64bb272a6e68e5b82db4ffd5e3e75
4
+ data.tar.gz: 3fb83828166f3f10e5420d2e6b505167b175183d
5
5
  SHA512:
6
- metadata.gz: f04c0e5d4c0d1f41af6a49b64f922faf592dbafbe6ee11ade859a23e558ba888e5ae6e7c22ca261ad361b5870a2b0b54a8d02f99e981d62aa9d5580d7ddb41f9
7
- data.tar.gz: fb6c4568245c45e24ef30d981e5ec39a5af725995cd38841303d1ef206f888f198de54b740e5afb5d259b0b2a8994f5e25b1d66187dfa846cae0df22405d3e4c
6
+ metadata.gz: 8cddf1f935f4856c56cc4e3aad13cb05456e2be237022d033864969f498bb5428a550453c785501b063b7c64daa16005edffe19e26d4b5decd7026201311d41e
7
+ data.tar.gz: 09a91ab2023b4bf7ab367e5ed2efd6354089062985e1651cc40d84ee5723b18dd50d53241a1e43438ff257c3a3d2249e1ead879f0f8533aae3ad21de4a1ec879
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # json_schema_rails
2
2
 
3
- [![Build Status](https://travis-ci.org/kotas/json_schema_rails.svg?branch=master)](https://travis-ci.org/kotas/json_schema_rails) [![Code Climate](https://codeclimate.com/github/kotas/json_schema_rails.png)](https://codeclimate.com/github/kotas/json_schema_rails)
3
+ [![Build Status](https://travis-ci.org/kotas/json_schema_rails.svg?branch=master)](https://travis-ci.org/kotas/json_schema_rails) [![Code Climate](https://codeclimate.com/github/kotas/json_schema_rails.png)](https://codeclimate.com/github/kotas/json_schema_rails) [![Gem Version](https://badge.fury.io/rb/json_schema_rails.svg)](http://badge.fury.io/rb/json_schema_rails)
4
4
 
5
5
  [JSON Schema v4](http://json-schema.org/) validator and generator for Rails 3+
6
6
 
@@ -114,11 +114,32 @@ And you can get your schemas through the path `/schemas` like following:
114
114
  ```
115
115
  # Get `app/schemas/posts/create.*` as application/json
116
116
  GET /schemas/posts/create.json
117
+ GET /schemas/posts/create
117
118
 
118
119
  # Get `app/schemas/posts/update.*` as text/yaml
119
120
  GET /schemas/posts/update.yaml
120
121
  ```
121
122
 
123
+ To get a path to a specific schema's endpoint, call `json_schema_rails.schema_path(schema_name)` or `json_schema_rails.schema_url(schema_name)`.
124
+
125
+ ```ruby
126
+ # In your controller or view
127
+ json_schema_rails.schema_path("posts/create") # "/schemas/posts/create"
128
+ json_schema_rails.schema_url("posts/update") # "http://example.com/schemas/posts/create"
129
+ ```
130
+
131
+ You can change `json_schema_rails` part of above by specifying `as` parameter when mounting the route:
132
+
133
+ ```ruby
134
+ Your::Application.routes.draw do
135
+ mount JsonSchemaRails::Engine => '/schemas', as: 'json_schema'
136
+ end
137
+
138
+ # And you can call the helpers as
139
+ json_schema.schema_path("posts/create")
140
+ json_schema.schema_url("posts/update")
141
+ ```
142
+
122
143
  ### Validate schema files
123
144
 
124
145
  json_schema_rails provides a rake task `schema:check` to validate your schema files.
@@ -1,7 +1,7 @@
1
1
  module JsonSchemaRails
2
2
  class SchemasController < ApplicationController
3
- def get
4
- schema = JsonSchemaRails.lookup_schema(params[:schema])
3
+ def show
4
+ schema = JsonSchemaRails.lookup_schema(params[:id])
5
5
  raise ActionController::RoutingError.new('No Such Schema') unless schema
6
6
 
7
7
  respond_to do |format|
data/config/routes.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  JsonSchemaRails::Engine.routes.draw do
2
- get '/:schema(.:format)', to: 'schemas#get', constraints: { schema: /[\/a-zA-Z0-9_-]+/ }
2
+ resources :schemas, only: :show, path: '', id: /[\/a-zA-Z0-9_-]+/, defaults: { format: 'json' }
3
3
  end
@@ -1,3 +1,3 @@
1
1
  module JsonSchemaRails
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,11 @@
1
+ class HelpersController < ApplicationController
2
+ def show_schema_path
3
+ path = json_schema_rails.schema_path(params[:schema_name])
4
+ render text: path
5
+ end
6
+
7
+ def show_schema_url
8
+ url = json_schema_rails.schema_url(params[:schema_name])
9
+ render text: url
10
+ end
11
+ end
@@ -2,6 +2,9 @@ Dummy::Application.routes.draw do
2
2
  mount JsonSchemaRails::Engine => '/schemas'
3
3
  resources :posts, only: [:create, :update]
4
4
 
5
+ get 'helpers/schema_path', to: 'helpers#show_schema_path'
6
+ get 'helpers/schema_url', to: 'helpers#show_schema_url'
7
+
5
8
  # The priority is based upon order of creation:
6
9
  # first created -> highest priority.
7
10
 
@@ -0,0 +1,11 @@
1
+ class HelpersController < ApplicationController
2
+ def show_schema_path
3
+ path = json_schema_rails.schema_path(params[:schema_name])
4
+ render text: path
5
+ end
6
+
7
+ def show_schema_url
8
+ url = json_schema_rails.schema_url(params[:schema_name])
9
+ render text: url
10
+ end
11
+ end
@@ -2,6 +2,9 @@ Rails.application.routes.draw do
2
2
  mount JsonSchemaRails::Engine => '/schemas'
3
3
  resources :posts, only: [:create, :update]
4
4
 
5
+ get 'helpers/schema_path', to: 'helpers#show_schema_path'
6
+ get 'helpers/schema_url', to: 'helpers#show_schema_url'
7
+
5
8
  # The priority is based upon order of creation: first created -> highest priority.
6
9
  # See how all your routes lay out with "rake routes".
7
10
 
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe HelpersController, type: :controller do
4
+ describe "schema_path helper" do
5
+ it "returns a path to schema endpoint" do
6
+ get "show_schema_path", { "schema_name" => "posts/create" }
7
+ expect(response.body).to eq "/schemas/posts/create"
8
+ end
9
+ end
10
+
11
+ describe "schema_url helper" do
12
+ it "returns a URL to schema endpoint" do
13
+ get "show_schema_url", { "schema_name" => "posts/create" }
14
+ expect(response.body).to eq "#{request.base_url}/schemas/posts/create"
15
+ end
16
+ end
17
+ end
@@ -3,11 +3,20 @@ require 'spec_helper'
3
3
  RSpec.describe JsonSchemaRails::SchemasController, type: :request do
4
4
  describe "GET #get" do
5
5
  context "with existing schema" do
6
- before { get "/schemas/posts/create.#{format}" }
6
+ before { get "/schemas/posts/create#{format}" }
7
7
  let(:expected_schema) { YAML.load_file(Rails.root.join('app', 'schemas', 'posts', 'create.yml').to_s) }
8
8
 
9
9
  context "as json" do
10
- let(:format) { "json" }
10
+ let(:format) { ".json" }
11
+ it "returns the schema as json" do
12
+ expect(response).to be_success
13
+ expect(response.content_type).to eq :json
14
+ expect(response.body).to eq expected_schema.to_json
15
+ end
16
+ end
17
+
18
+ context "without format" do
19
+ let(:format) { "" }
11
20
  it "returns the schema as json" do
12
21
  expect(response).to be_success
13
22
  expect(response.content_type).to eq :json
@@ -16,7 +25,7 @@ RSpec.describe JsonSchemaRails::SchemasController, type: :request do
16
25
  end
17
26
 
18
27
  context "as yaml" do
19
- let(:format) { "yaml" }
28
+ let(:format) { ".yaml" }
20
29
  it "returns the schema as yaml" do
21
30
  expect(response).to be_success
22
31
  expect(response.content_type).to eq :yaml
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_schema_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kota Saito
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-22 00:00:00.000000000 Z
11
+ date: 2014-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -209,6 +209,7 @@ files:
209
209
  - spec/dummy_apps/rails3/app/assets/javascripts/application.js
210
210
  - spec/dummy_apps/rails3/app/assets/stylesheets/application.css
211
211
  - spec/dummy_apps/rails3/app/controllers/application_controller.rb
212
+ - spec/dummy_apps/rails3/app/controllers/helpers_controller.rb
212
213
  - spec/dummy_apps/rails3/app/controllers/posts_controller.rb
213
214
  - spec/dummy_apps/rails3/app/helpers/application_helper.rb
214
215
  - spec/dummy_apps/rails3/app/schemas/posts/create.yml
@@ -248,6 +249,7 @@ files:
248
249
  - spec/dummy_apps/rails4/app/assets/stylesheets/posts.css
249
250
  - spec/dummy_apps/rails4/app/controllers/application_controller.rb
250
251
  - spec/dummy_apps/rails4/app/controllers/concerns/.keep
252
+ - spec/dummy_apps/rails4/app/controllers/helpers_controller.rb
251
253
  - spec/dummy_apps/rails4/app/controllers/posts_controller.rb
252
254
  - spec/dummy_apps/rails4/app/helpers/application_helper.rb
253
255
  - spec/dummy_apps/rails4/app/mailers/.keep
@@ -288,6 +290,7 @@ files:
288
290
  - spec/fixtures/schemas/posts/search.json
289
291
  - spec/fixtures/schemas/posts/update.yaml
290
292
  - spec/fixtures/schemas/syntax_error.json
293
+ - spec/integration/helpers_controller_spec.rb
291
294
  - spec/integration/posts_controller_spec.rb
292
295
  - spec/integration/schemas_controller_spec.rb
293
296
  - spec/lib/json_schema_rails/json_schema/parser_spec.rb
@@ -327,6 +330,7 @@ test_files:
327
330
  - spec/dummy_apps/rails3/app/assets/javascripts/application.js
328
331
  - spec/dummy_apps/rails3/app/assets/stylesheets/application.css
329
332
  - spec/dummy_apps/rails3/app/controllers/application_controller.rb
333
+ - spec/dummy_apps/rails3/app/controllers/helpers_controller.rb
330
334
  - spec/dummy_apps/rails3/app/controllers/posts_controller.rb
331
335
  - spec/dummy_apps/rails3/app/helpers/application_helper.rb
332
336
  - spec/dummy_apps/rails3/app/schemas/posts/create.yml
@@ -366,6 +370,7 @@ test_files:
366
370
  - spec/dummy_apps/rails4/app/assets/stylesheets/posts.css
367
371
  - spec/dummy_apps/rails4/app/controllers/application_controller.rb
368
372
  - spec/dummy_apps/rails4/app/controllers/concerns/.keep
373
+ - spec/dummy_apps/rails4/app/controllers/helpers_controller.rb
369
374
  - spec/dummy_apps/rails4/app/controllers/posts_controller.rb
370
375
  - spec/dummy_apps/rails4/app/helpers/application_helper.rb
371
376
  - spec/dummy_apps/rails4/app/mailers/.keep
@@ -406,6 +411,7 @@ test_files:
406
411
  - spec/fixtures/schemas/posts/search.json
407
412
  - spec/fixtures/schemas/posts/update.yaml
408
413
  - spec/fixtures/schemas/syntax_error.json
414
+ - spec/integration/helpers_controller_spec.rb
409
415
  - spec/integration/posts_controller_spec.rb
410
416
  - spec/integration/schemas_controller_spec.rb
411
417
  - spec/lib/json_schema_rails/json_schema/parser_spec.rb