praxis 0.21 → 0.22.pre.1

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.
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
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.3
data/lib/praxis/stats.rb DELETED
@@ -1,113 +0,0 @@
1
- require 'singleton'
2
-
3
- require 'harness'
4
-
5
- module Praxis
6
-
7
- module Stats
8
- include Praxis::PluginConcern
9
-
10
- class Statsd < ::Statsd
11
- def initialize(host: '127.0.0.1', port: 8125, prefix: nil, postfix: nil)
12
- self.host = host
13
- self.port = port
14
- self.namespace = prefix if prefix
15
- self.postfix = postfix
16
- @batch_size = 10
17
- end
18
- end
19
-
20
- class Plugin < Praxis::Plugin
21
- include Singleton
22
-
23
- def initialize
24
- @options = {config_file: 'config/stats.yml'}
25
- end
26
-
27
- def config_key
28
- :stats # 'praxis.stats'
29
- end
30
-
31
- def prepare_config!(node)
32
- node.attributes do
33
- attribute :collector, Hash, default: {type: 'Harness::FakeCollector'} do
34
- key :type, String, required: true
35
- key :args, Hash
36
- end
37
- attribute :queue, Hash, default: {type: 'Harness::AsyncQueue' } do
38
- key :type, String, required: true
39
- key :args, Hash
40
- end
41
- end
42
- end
43
-
44
- def setup!
45
- Harness.config.collector = load_type(config.collector)
46
- Harness.config.queue = load_type(config.queue)
47
- end
48
-
49
- def load_type(hash)
50
- type = hash[:type].constantize
51
- args = hash[:args]
52
- args_hash = case args
53
- when Attributor::Hash
54
- args.contents.symbolize_keys
55
- when Hash
56
- args.symbolize_keys
57
- when nil
58
- {}
59
- else
60
- raise "unknown args type: #{args.class.name}"
61
- end
62
-
63
- if args_hash.any?
64
- type.new(**args_hash)
65
- else
66
- type.new
67
- end
68
-
69
- end
70
-
71
- end
72
-
73
-
74
- def self.collector
75
- Harness.collector
76
- end
77
-
78
- def self.config
79
- Harness.config
80
- end
81
-
82
- def self.queue
83
- Harness.queue
84
- end
85
-
86
- def self.count(*args)
87
- Harness.count(*args)
88
- end
89
-
90
- def self.decrement(*args)
91
- Harness.decrement(*args)
92
- end
93
-
94
- def self.gauge(*args)
95
- Harness.gauge(*args)
96
- end
97
-
98
- def self.increment(*args)
99
- Harness.increment(*args)
100
- end
101
-
102
- def self.time(stat, sample_rate = 1, &block)
103
- Harness.time(stat, sample_rate, &block)
104
- end
105
-
106
- def self.timing(*args)
107
- Harness.timing(*args)
108
- end
109
-
110
-
111
- end
112
-
113
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Praxis::Stats do
4
-
5
- its(:collector) { should be Harness.collector }
6
- its(:queue) { should be Harness.queue }
7
- its(:config) { should be Harness.config }
8
-
9
- end