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