praxis 0.21 → 0.22.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +20 -12
  3. data/CHANGELOG.md +24 -0
  4. data/CONTRIBUTING.md +4 -4
  5. data/README.md +11 -9
  6. data/lib/api_browser/app/js/directives/attribute_table.js +2 -1
  7. data/lib/api_browser/app/js/directives/conditional_requirements.js +13 -0
  8. data/lib/api_browser/app/js/directives/type_placeholder.js +10 -1
  9. data/lib/api_browser/app/js/factories/normalize_attributes.js +4 -2
  10. data/lib/api_browser/app/js/factories/template_for.js +5 -2
  11. data/lib/api_browser/app/js/filters/has_requirement.js +14 -0
  12. data/lib/api_browser/app/js/filters/tag_requirement.js +13 -0
  13. data/lib/api_browser/app/sass/praxis.scss +11 -0
  14. data/lib/api_browser/app/views/action.html +2 -2
  15. data/lib/api_browser/app/views/directives/attribute_description/member_options.html +2 -2
  16. data/lib/api_browser/app/views/directives/attribute_table.html +1 -1
  17. data/lib/api_browser/app/views/type.html +1 -1
  18. data/lib/api_browser/app/views/type/details.html +2 -2
  19. data/lib/api_browser/app/views/types/embedded/array.html +2 -0
  20. data/lib/api_browser/app/views/types/embedded/default.html +3 -1
  21. data/lib/api_browser/app/views/types/embedded/requirements.html +6 -0
  22. data/lib/api_browser/app/views/types/embedded/single_req.html +9 -0
  23. data/lib/api_browser/app/views/types/embedded/struct.html +14 -2
  24. data/lib/api_browser/app/views/types/standalone/array.html +1 -1
  25. data/lib/api_browser/app/views/types/standalone/struct.html +2 -1
  26. data/lib/api_browser/package.json +1 -1
  27. data/lib/praxis.rb +8 -6
  28. data/lib/praxis/action_definition.rb +9 -7
  29. data/lib/praxis/api_definition.rb +44 -27
  30. data/lib/praxis/api_general_info.rb +3 -2
  31. data/lib/praxis/application.rb +139 -20
  32. data/lib/praxis/bootloader.rb +2 -4
  33. data/lib/praxis/bootloader_stages/environment.rb +0 -13
  34. data/lib/praxis/controller.rb +2 -0
  35. data/lib/praxis/dispatcher.rb +16 -10
  36. data/lib/praxis/docs/generator.rb +20 -9
  37. data/lib/praxis/docs/link_builder.rb +1 -1
  38. data/lib/praxis/error_handler.rb +5 -5
  39. data/lib/praxis/extensions/attribute_filtering.rb +28 -0
  40. data/lib/praxis/extensions/attribute_filtering/active_record_filter_query_builder.rb +180 -0
  41. data/lib/praxis/extensions/attribute_filtering/filtering_params.rb +273 -0
  42. data/lib/praxis/extensions/attribute_filtering/query_builder.rb +39 -0
  43. data/lib/praxis/extensions/field_selection.rb +3 -0
  44. data/lib/praxis/extensions/field_selection/active_record_query_selector.rb +57 -0
  45. data/lib/praxis/extensions/field_selection/sequel_query_selector.rb +65 -0
  46. data/lib/praxis/extensions/rails_compat.rb +2 -0
  47. data/lib/praxis/extensions/rails_compat/request_methods.rb +19 -0
  48. data/lib/praxis/extensions/rendering.rb +1 -1
  49. data/lib/praxis/file_group.rb +1 -1
  50. data/lib/praxis/middleware_app.rb +26 -6
  51. data/lib/praxis/multipart/parser.rb +14 -2
  52. data/lib/praxis/multipart/part.rb +5 -3
  53. data/lib/praxis/plugins/praxis_mapper_plugin.rb +2 -2
  54. data/lib/praxis/plugins/rails_plugin.rb +104 -0
  55. data/lib/praxis/request.rb +8 -9
  56. data/lib/praxis/request_stages/response.rb +3 -2
  57. data/lib/praxis/request_superclassing.rb +11 -0
  58. data/lib/praxis/resource_definition.rb +14 -10
  59. data/lib/praxis/response.rb +6 -7
  60. data/lib/praxis/response_definition.rb +7 -5
  61. data/lib/praxis/response_template.rb +4 -3
  62. data/lib/praxis/responses/http.rb +0 -36
  63. data/lib/praxis/responses/internal_server_error.rb +3 -12
  64. data/lib/praxis/responses/multipart_ok.rb +4 -11
  65. data/lib/praxis/responses/validation_error.rb +1 -10
  66. data/lib/praxis/router.rb +3 -3
  67. data/lib/praxis/tasks/api_docs.rb +10 -2
  68. data/lib/praxis/tasks/routes.rb +1 -0
  69. data/lib/praxis/version.rb +1 -1
  70. data/praxis.gemspec +4 -5
  71. data/spec/functional_spec.rb +4 -6
  72. data/spec/praxis/action_definition_spec.rb +26 -15
  73. data/spec/praxis/api_definition_spec.rb +13 -8
  74. data/spec/praxis/api_general_info_spec.rb +3 -8
  75. data/spec/praxis/application_spec.rb +13 -7
  76. data/spec/praxis/middleware_app_spec.rb +24 -10
  77. data/spec/praxis/request_spec.rb +17 -7
  78. data/spec/praxis/request_stages/validate_spec.rb +1 -1
  79. data/spec/praxis/resource_definition_spec.rb +12 -10
  80. data/spec/praxis/response_definition_spec.rb +22 -5
  81. data/spec/praxis/response_spec.rb +12 -5
  82. data/spec/praxis/responses/internal_server_error_spec.rb +4 -7
  83. data/spec/praxis/responses/validation_error_spec.rb +2 -2
  84. data/spec/praxis/router_spec.rb +8 -4
  85. data/spec/spec_app/config.ru +1 -6
  86. data/spec/spec_helper.rb +3 -3
  87. data/tasks/thor/templates/generator/empty_app/Gemfile +3 -3
  88. metadata +36 -32
  89. data/.ruby-version +0 -1
  90. data/lib/praxis/stats.rb +0 -113
  91. data/spec/praxis/stats_spec.rb +0 -9
@@ -1,7 +1,24 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Praxis::ResponseDefinition do
4
- subject(:response_definition) { Praxis::ResponseDefinition.new(name, &block) }
4
+ let(:praxis_app) do
5
+ app = Praxis::Application.new(skip_registration: true)
6
+ app.versioning_scheme = [:header, :params]
7
+ app.handler 'json' , Praxis::Handlers::JSON
8
+ app.handler 'x-www-form-urlencoded', Praxis::Handlers::WWWForm
9
+ app.handler 'xml', Praxis::Handlers::XML
10
+ app.api_definition.instance_eval do |api_def|
11
+ api_def.info do
12
+ base_path "/api"
13
+ produces 'json','xml'
14
+ end
15
+ end
16
+ app
17
+ end
18
+
19
+
20
+
21
+ subject(:response_definition) { Praxis::ResponseDefinition.new(name, praxis_app, &block) }
5
22
  let(:name) { 'response_name' }
6
23
 
7
24
  let(:block) do
@@ -482,7 +499,7 @@ describe Praxis::ResponseDefinition do
482
499
  context 'with invalid definitions' do
483
500
  it 'raises an error if status code is not part of the definition' do
484
501
  expect do
485
- Praxis::ResponseDefinition.new('response name') do
502
+ Praxis::ResponseDefinition.new('response name',praxis_app) do
486
503
  description "testing"
487
504
  end
488
505
  end.to raise_error(Praxis::Exceptions::InvalidConfiguration)
@@ -496,7 +513,7 @@ describe Praxis::ResponseDefinition do
496
513
  let(:parts) { nil }
497
514
 
498
515
  let(:response) do
499
- Praxis::ResponseDefinition.new(:custom) do
516
+ Praxis::ResponseDefinition.new(:custom, praxis_app) do
500
517
  status 300
501
518
  end
502
519
  end
@@ -524,8 +541,8 @@ describe Praxis::ResponseDefinition do
524
541
  its(['xml', :content_type]) { should eq('application/vnd.acme.instance+xml') }
525
542
 
526
543
  it 'properly encodes the example bodies' do
527
- json = Praxis::Application.instance.handlers['json'].parse(examples['json'][:body])
528
- xml = Praxis::Application.instance.handlers['xml'].parse(examples['xml'][:body])
544
+ json = praxis_app.handlers['json'].parse(examples['json'][:body])
545
+ xml = praxis_app.handlers['xml'].parse(examples['xml'][:body])
529
546
  expect(json).to eq xml
530
547
  end
531
548
 
@@ -49,7 +49,14 @@ describe Praxis::Response do
49
49
  end
50
50
 
51
51
  subject(:response) { Praxis::Responses::Ok.new(status: response_status, headers: response_headers) }
52
-
52
+ let(:application) do
53
+ double("PraxisApp", handlers: handlers, config: praxis_config)
54
+ end
55
+ let(:handlers) do
56
+ {'json' => Praxis::Handlers::JSON.new }
57
+ end
58
+ let(:praxis_config){ double(praxis: double("...") ) }
59
+
53
60
  describe '#validate' do
54
61
  before do
55
62
  allow(action).to receive(:responses).and_return({response_spec.name => response_spec })
@@ -86,7 +93,7 @@ describe Praxis::Response do
86
93
  before { response.body = response_body_entity }
87
94
 
88
95
  it 'leaves well enough alone' do
89
- response.encode!
96
+ response.encode!(handlers: handlers)
90
97
  expect(response.body).to eq(response_body_entity)
91
98
  end
92
99
  end
@@ -95,7 +102,7 @@ describe Praxis::Response do
95
102
  before { response.body = response_body_structured_data }
96
103
 
97
104
  it 'encodes using a suitable handler' do
98
- response.encode!
105
+ response.encode!(handlers: handlers)
99
106
  expect(JSON.load(response.body)).to eq(response_body_structured_data)
100
107
  end
101
108
  end
@@ -108,7 +115,7 @@ describe Praxis::Response do
108
115
  'Location' => '/api/resources/123' }
109
116
  }
110
117
  it 'still defaults to the default handler' do
111
- response.encode!
118
+ response.encode!(handlers: handlers)
112
119
  expect(JSON.load(response.body)).to eq(response_body_structured_data)
113
120
  end
114
121
  end
@@ -158,7 +165,7 @@ describe Praxis::Response do
158
165
  response.status = 500
159
166
  end
160
167
 
161
- let!(:finished_response) { response.finish }
168
+ let!(:finished_response) { response.finish(application: application) }
162
169
 
163
170
  it 'returns status, headers, body' do
164
171
  expect(finished_response).to eq([response.status, response.headers, response.body])
@@ -8,7 +8,7 @@ describe Praxis::Responses::InternalServerError do
8
8
  it 'always sets the json content type' do
9
9
  expect(response.name).to be(:internal_server_error)
10
10
  expect(response.status).to be(500)
11
- expect(response.body).to be_empty
11
+ expect(response.body).to be_nil
12
12
  expect(response.headers).to have_key('Content-Type')
13
13
  expect(response.headers['Content-Type']).to eq('application/json')
14
14
  expect(response.instance_variable_get(:@error)).to be(nil)
@@ -17,15 +17,12 @@ describe Praxis::Responses::InternalServerError do
17
17
 
18
18
 
19
19
  context '.format!' do
20
+ let(:app){ double("PraxisApp", config: double(praxis: config)) }
20
21
  let(:error) { double('error', message: 'error message', backtrace: [1, 2], cause: cause) }
21
22
 
22
23
  let(:show_exceptions) { true }
23
24
  let(:config) { double("config", show_exceptions: show_exceptions) }
24
25
 
25
- before do
26
- allow(Praxis::Application.instance.config).to receive(:praxis).and_return(config)
27
- end
28
-
29
26
  context 'with show_exceptions false' do
30
27
  end
31
28
 
@@ -52,8 +49,8 @@ describe Praxis::Responses::InternalServerError do
52
49
 
53
50
  subject(:response) { Praxis::Responses::InternalServerError.new(error: error) }
54
51
  before do
55
- expect(response.body).to be_empty
56
- response.format!
52
+ expect(response.body).to be_nil
53
+ response.format!(config: app.config)
57
54
  end
58
55
 
59
56
  end
@@ -9,7 +9,7 @@ describe Praxis::Responses::ValidationError do
9
9
  it 'always sets the json content type' do
10
10
  expect(response.name).to be(:validation_error)
11
11
  expect(response.status).to be(400)
12
- expect(response.body).to be_empty
12
+ expect(response.body).to be_nil
13
13
  expect(response.headers).to have_key('Content-Type')
14
14
  expect(response.headers['Content-Type']).to eq('application/json')
15
15
  expect(response.instance_variable_get(:@errors)).to be(nil)
@@ -24,7 +24,7 @@ describe Praxis::Responses::ValidationError do
24
24
  let(:exception){ nil }
25
25
  subject(:response) { Praxis::Responses::ValidationError.new(summary: summary, errors: errors, exception: exception) }
26
26
  before do
27
- expect(response.body).to be_empty
27
+ expect(response.body).to be_nil
28
28
  end
29
29
  context 'when errors' do
30
30
  it 'it fills the errors key' do
@@ -1,6 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Praxis::Router do
4
+ let(:application) do
5
+ app = Praxis::Application.new(skip_registration: true)
6
+ app.versioning_scheme = [:header, :params]
7
+ app
8
+ end
4
9
  describe Praxis::Router::VersionMatcher do
5
10
  let(:resource_definition){ double("resource_definition", version_options: { using: [:header, :params] }) }
6
11
  let(:action){ double("action", resource_definition: resource_definition ) }
@@ -17,7 +22,7 @@ describe Praxis::Router do
17
22
 
18
23
  context '.call' do
19
24
  let(:env){ {"HTTP_X_API_VERSION" => request_version } }
20
- let(:request) {Praxis::Request.new(env)}
25
+ let(:request) {Praxis::Request.new(env,application: application)}
21
26
 
22
27
  context 'with matching versions' do
23
28
  let(:request_version) { "1.0" }
@@ -67,7 +72,6 @@ describe Praxis::Router do
67
72
  end
68
73
  end
69
74
 
70
- let(:application) { instance_double('Praxis::Application')}
71
75
  subject(:router) {Praxis::Router.new(application)}
72
76
 
73
77
  context "attributes" do
@@ -104,7 +108,7 @@ describe Praxis::Router do
104
108
  let(:request_verb) { 'POST' }
105
109
  let(:request_path_info) { '/' }
106
110
  let(:request_version){ nil }
107
- let(:request) {Praxis::Request.new(env)}
111
+ let(:request) {Praxis::Request.new(env, application: application)}
108
112
  let(:router_response){ 1 }
109
113
  let(:router_response_for_post){ "POST result" }
110
114
  let(:router_response_for_wildcard){ "* result" }
@@ -185,7 +189,7 @@ describe Praxis::Router do
185
189
  end
186
190
 
187
191
  context 'with X-Cascade disabled' do
188
- let(:config) { Praxis::Application.instance.config.praxis }
192
+ let(:config) { application.config.praxis }
189
193
  before do
190
194
  expect(config).to receive(:x_cascade).and_return(false)
191
195
  end
@@ -9,9 +9,4 @@ $:.unshift File.expand_path('lib', __dir__)
9
9
 
10
10
  require 'praxis'
11
11
 
12
-
13
- application = Praxis::Application.instance
14
-
15
- application.setup
16
-
17
- run application
12
+ run Praxis::Application.new.setup
data/spec/spec_helper.rb CHANGED
@@ -20,22 +20,21 @@ require 'rspec/its'
20
20
  require 'rspec/collection_matchers'
21
21
 
22
22
 
23
-
24
23
  Dir["#{File.dirname(__FILE__)}/../lib/praxis/plugins/*.rb"].each do |file|
25
24
  require file
26
25
  end
27
26
 
27
+ APP = Praxis::Application.instance
28
28
  Dir["#{File.dirname(__FILE__)}/support/*.rb"].each do |file|
29
29
  require file
30
30
  end
31
31
 
32
-
33
32
  RSpec.configure do |config|
34
33
  config.include Rack::Test::Methods
35
34
 
36
35
  config.before(:suite) do
37
36
  Praxis::Blueprint.caching_enabled = true
38
- Praxis::Application.instance.setup(root:'spec/spec_app')
37
+ APP.setup(root:'spec/spec_app')
39
38
 
40
39
  # create the table
41
40
  setup_database!
@@ -50,6 +49,7 @@ RSpec.configure do |config|
50
49
  config.before(:all) do
51
50
  # disable logging below warn level
52
51
  Praxis::Application.instance.logger.level = 2 # warn
52
+ Thread.current[:praxis_instance] = APP
53
53
  end
54
54
  end
55
55
 
@@ -1,8 +1,8 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem 'praxis', github: 'rightscale/praxis'
4
- gem 'attributor', github: 'rightscale/attributor'
5
- gem 'praxis-blueprints', github: 'rightscale/praxis-blueprints'
3
+ gem 'praxis', github: 'praxis/praxis'
4
+ gem 'attributor', github: 'praxis/attributor'
5
+ gem 'praxis-blueprints', github: 'praxis/praxis-blueprints'
6
6
 
7
7
  gem 'rainbows', require: false
8
8
  gem 'rake'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: praxis
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.21'
4
+ version: 0.22.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep M. Blanquer
@@ -9,36 +9,42 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-08-19 00:00:00.000000000 Z
12
+ date: 2019-09-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: mustermann
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
+ - - "<="
36
+ - !ruby/object:Gem::Version
37
+ version: '1'
35
38
  type: :runtime
36
39
  prerelease: false
37
40
  version_requirements: !ruby/object:Gem::Requirement
38
41
  requirements:
39
- - - "~>"
42
+ - - ">="
40
43
  - !ruby/object:Gem::Version
41
44
  version: '0'
45
+ - - "<="
46
+ - !ruby/object:Gem::Version
47
+ version: '1'
42
48
  - !ruby/object:Gem::Dependency
43
49
  name: activesupport
44
50
  requirement: !ruby/object:Gem::Requirement
@@ -137,34 +143,20 @@ dependencies:
137
143
  - - "~>"
138
144
  - !ruby/object:Gem::Version
139
145
  version: '1.4'
140
- - !ruby/object:Gem::Dependency
141
- name: harness
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - "~>"
145
- - !ruby/object:Gem::Version
146
- version: '2'
147
- type: :runtime
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: '2'
154
146
  - !ruby/object:Gem::Dependency
155
147
  name: bundler
156
148
  requirement: !ruby/object:Gem::Requirement
157
149
  requirements:
158
- - - "~>"
150
+ - - ">="
159
151
  - !ruby/object:Gem::Version
160
- version: '1.6'
152
+ version: '0'
161
153
  type: :development
162
154
  prerelease: false
163
155
  version_requirements: !ruby/object:Gem::Requirement
164
156
  requirements:
165
- - - "~>"
157
+ - - ">="
166
158
  - !ruby/object:Gem::Version
167
- version: '1.6'
159
+ version: '0'
168
160
  - !ruby/object:Gem::Dependency
169
161
  name: rake
170
162
  requirement: !ruby/object:Gem::Requirement
@@ -414,7 +406,6 @@ extra_rdoc_files: []
414
406
  files:
415
407
  - ".gitignore"
416
408
  - ".rspec"
417
- - ".ruby-version"
418
409
  - ".simplecov"
419
410
  - ".travis.yml"
420
411
  - CHANGELOG.md
@@ -439,6 +430,7 @@ files:
439
430
  - lib/api_browser/app/js/controllers/type.js
440
431
  - lib/api_browser/app/js/directives/attribute_description.js
441
432
  - lib/api_browser/app/js/directives/attribute_table.js
433
+ - lib/api_browser/app/js/directives/conditional_requirements.js
442
434
  - lib/api_browser/app/js/directives/fixed_if_fits.js
443
435
  - lib/api_browser/app/js/directives/highlight.js
444
436
  - lib/api_browser/app/js/directives/menu_item.js
@@ -456,10 +448,12 @@ files:
456
448
  - lib/api_browser/app/js/factories/template_for.js
457
449
  - lib/api_browser/app/js/filters/attribute_name.js
458
450
  - lib/api_browser/app/js/filters/friendly_json.js
451
+ - lib/api_browser/app/js/filters/has_requirement.js
459
452
  - lib/api_browser/app/js/filters/header_info.js
460
453
  - lib/api_browser/app/js/filters/is_empty.js
461
454
  - lib/api_browser/app/js/filters/markdown.js
462
455
  - lib/api_browser/app/js/filters/resource_name.js
456
+ - lib/api_browser/app/js/filters/tag_requirement.js
463
457
  - lib/api_browser/app/sass/modules/_body.scss
464
458
  - lib/api_browser/app/sass/modules/_cloke.scss
465
459
  - lib/api_browser/app/sass/modules/_header.scss
@@ -489,9 +483,12 @@ files:
489
483
  - lib/api_browser/app/views/trait.html
490
484
  - lib/api_browser/app/views/type.html
491
485
  - lib/api_browser/app/views/type/details.html
486
+ - lib/api_browser/app/views/types/embedded/array.html
492
487
  - lib/api_browser/app/views/types/embedded/default.html
493
488
  - lib/api_browser/app/views/types/embedded/field-selector.html
494
489
  - lib/api_browser/app/views/types/embedded/links.html
490
+ - lib/api_browser/app/views/types/embedded/requirements.html
491
+ - lib/api_browser/app/views/types/embedded/single_req.html
495
492
  - lib/api_browser/app/views/types/embedded/struct.html
496
493
  - lib/api_browser/app/views/types/label/link.html
497
494
  - lib/api_browser/app/views/types/label/primitive.html
@@ -539,10 +536,18 @@ files:
539
536
  - lib/praxis/exceptions/invalid_trait.rb
540
537
  - lib/praxis/exceptions/stage_not_found.rb
541
538
  - lib/praxis/exceptions/validation.rb
539
+ - lib/praxis/extensions/attribute_filtering.rb
540
+ - lib/praxis/extensions/attribute_filtering/active_record_filter_query_builder.rb
541
+ - lib/praxis/extensions/attribute_filtering/filtering_params.rb
542
+ - lib/praxis/extensions/attribute_filtering/query_builder.rb
542
543
  - lib/praxis/extensions/field_expansion.rb
543
544
  - lib/praxis/extensions/field_selection.rb
545
+ - lib/praxis/extensions/field_selection/active_record_query_selector.rb
544
546
  - lib/praxis/extensions/field_selection/field_selector.rb
547
+ - lib/praxis/extensions/field_selection/sequel_query_selector.rb
545
548
  - lib/praxis/extensions/mapper_selectors.rb
549
+ - lib/praxis/extensions/rails_compat.rb
550
+ - lib/praxis/extensions/rails_compat/request_methods.rb
546
551
  - lib/praxis/extensions/rendering.rb
547
552
  - lib/praxis/file_group.rb
548
553
  - lib/praxis/handlers/json.rb
@@ -560,6 +565,7 @@ files:
560
565
  - lib/praxis/plugin.rb
561
566
  - lib/praxis/plugin_concern.rb
562
567
  - lib/praxis/plugins/praxis_mapper_plugin.rb
568
+ - lib/praxis/plugins/rails_plugin.rb
563
569
  - lib/praxis/request.rb
564
570
  - lib/praxis/request_stages/action.rb
565
571
  - lib/praxis/request_stages/load_request.rb
@@ -568,6 +574,7 @@ files:
568
574
  - lib/praxis/request_stages/validate.rb
569
575
  - lib/praxis/request_stages/validate_params_and_headers.rb
570
576
  - lib/praxis/request_stages/validate_payload.rb
577
+ - lib/praxis/request_superclassing.rb
571
578
  - lib/praxis/resource_definition.rb
572
579
  - lib/praxis/response.rb
573
580
  - lib/praxis/response_definition.rb
@@ -583,7 +590,6 @@ files:
583
590
  - lib/praxis/routing_config.rb
584
591
  - lib/praxis/simple_media_type.rb
585
592
  - lib/praxis/stage.rb
586
- - lib/praxis/stats.rb
587
593
  - lib/praxis/tasks.rb
588
594
  - lib/praxis/tasks/api_docs.rb
589
595
  - lib/praxis/tasks/console.rb
@@ -644,7 +650,6 @@ files:
644
650
  - spec/praxis/router_spec.rb
645
651
  - spec/praxis/routing_config_spec.rb
646
652
  - spec/praxis/stage_spec.rb
647
- - spec/praxis/stats_spec.rb
648
653
  - spec/praxis/trait_spec.rb
649
654
  - spec/praxis/types/fuzzy_hash_spec.rb
650
655
  - spec/praxis/types/multipart_array/part_definition_spec.rb
@@ -711,7 +716,7 @@ files:
711
716
  - tasks/thor/templates/generator/empty_app/docs/app.js
712
717
  - tasks/thor/templates/generator/empty_app/docs/styles.scss
713
718
  - tasks/thor/templates/generator/empty_app/spec/spec_helper.rb
714
- homepage: https://github.com/rightscale/praxis
719
+ homepage: https://github.com/praxis/praxis
715
720
  licenses:
716
721
  - MIT
717
722
  metadata: {}
@@ -726,12 +731,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
726
731
  version: '2.1'
727
732
  required_rubygems_version: !ruby/object:Gem::Requirement
728
733
  requirements:
729
- - - ">="
734
+ - - ">"
730
735
  - !ruby/object:Gem::Version
731
- version: '0'
736
+ version: 1.3.1
732
737
  requirements: []
733
- rubyforge_project:
734
- rubygems_version: 2.5.1
738
+ rubygems_version: 3.0.3
735
739
  signing_key:
736
740
  specification_version: 4
737
741
  summary: Building APIs the way you want it.