praxis 0.21 → 0.22.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +20 -12
- data/CHANGELOG.md +24 -0
- data/CONTRIBUTING.md +4 -4
- data/README.md +11 -9
- data/lib/api_browser/app/js/directives/attribute_table.js +2 -1
- data/lib/api_browser/app/js/directives/conditional_requirements.js +13 -0
- data/lib/api_browser/app/js/directives/type_placeholder.js +10 -1
- data/lib/api_browser/app/js/factories/normalize_attributes.js +4 -2
- data/lib/api_browser/app/js/factories/template_for.js +5 -2
- data/lib/api_browser/app/js/filters/has_requirement.js +14 -0
- data/lib/api_browser/app/js/filters/tag_requirement.js +13 -0
- data/lib/api_browser/app/sass/praxis.scss +11 -0
- data/lib/api_browser/app/views/action.html +2 -2
- data/lib/api_browser/app/views/directives/attribute_description/member_options.html +2 -2
- data/lib/api_browser/app/views/directives/attribute_table.html +1 -1
- data/lib/api_browser/app/views/type.html +1 -1
- data/lib/api_browser/app/views/type/details.html +2 -2
- data/lib/api_browser/app/views/types/embedded/array.html +2 -0
- data/lib/api_browser/app/views/types/embedded/default.html +3 -1
- data/lib/api_browser/app/views/types/embedded/requirements.html +6 -0
- data/lib/api_browser/app/views/types/embedded/single_req.html +9 -0
- data/lib/api_browser/app/views/types/embedded/struct.html +14 -2
- data/lib/api_browser/app/views/types/standalone/array.html +1 -1
- data/lib/api_browser/app/views/types/standalone/struct.html +2 -1
- data/lib/api_browser/package.json +1 -1
- data/lib/praxis.rb +8 -6
- data/lib/praxis/action_definition.rb +9 -7
- data/lib/praxis/api_definition.rb +44 -27
- data/lib/praxis/api_general_info.rb +3 -2
- data/lib/praxis/application.rb +139 -20
- data/lib/praxis/bootloader.rb +2 -4
- data/lib/praxis/bootloader_stages/environment.rb +0 -13
- data/lib/praxis/controller.rb +2 -0
- data/lib/praxis/dispatcher.rb +16 -10
- data/lib/praxis/docs/generator.rb +20 -9
- data/lib/praxis/docs/link_builder.rb +1 -1
- data/lib/praxis/error_handler.rb +5 -5
- data/lib/praxis/extensions/attribute_filtering.rb +28 -0
- data/lib/praxis/extensions/attribute_filtering/active_record_filter_query_builder.rb +180 -0
- data/lib/praxis/extensions/attribute_filtering/filtering_params.rb +273 -0
- data/lib/praxis/extensions/attribute_filtering/query_builder.rb +39 -0
- data/lib/praxis/extensions/field_selection.rb +3 -0
- data/lib/praxis/extensions/field_selection/active_record_query_selector.rb +57 -0
- data/lib/praxis/extensions/field_selection/sequel_query_selector.rb +65 -0
- data/lib/praxis/extensions/rails_compat.rb +2 -0
- data/lib/praxis/extensions/rails_compat/request_methods.rb +19 -0
- data/lib/praxis/extensions/rendering.rb +1 -1
- data/lib/praxis/file_group.rb +1 -1
- data/lib/praxis/middleware_app.rb +26 -6
- data/lib/praxis/multipart/parser.rb +14 -2
- data/lib/praxis/multipart/part.rb +5 -3
- data/lib/praxis/plugins/praxis_mapper_plugin.rb +2 -2
- data/lib/praxis/plugins/rails_plugin.rb +104 -0
- data/lib/praxis/request.rb +8 -9
- data/lib/praxis/request_stages/response.rb +3 -2
- data/lib/praxis/request_superclassing.rb +11 -0
- data/lib/praxis/resource_definition.rb +14 -10
- data/lib/praxis/response.rb +6 -7
- data/lib/praxis/response_definition.rb +7 -5
- data/lib/praxis/response_template.rb +4 -3
- data/lib/praxis/responses/http.rb +0 -36
- data/lib/praxis/responses/internal_server_error.rb +3 -12
- data/lib/praxis/responses/multipart_ok.rb +4 -11
- data/lib/praxis/responses/validation_error.rb +1 -10
- data/lib/praxis/router.rb +3 -3
- data/lib/praxis/tasks/api_docs.rb +10 -2
- data/lib/praxis/tasks/routes.rb +1 -0
- data/lib/praxis/version.rb +1 -1
- data/praxis.gemspec +4 -5
- data/spec/functional_spec.rb +4 -6
- data/spec/praxis/action_definition_spec.rb +26 -15
- data/spec/praxis/api_definition_spec.rb +13 -8
- data/spec/praxis/api_general_info_spec.rb +3 -8
- data/spec/praxis/application_spec.rb +13 -7
- data/spec/praxis/middleware_app_spec.rb +24 -10
- data/spec/praxis/request_spec.rb +17 -7
- data/spec/praxis/request_stages/validate_spec.rb +1 -1
- data/spec/praxis/resource_definition_spec.rb +12 -10
- data/spec/praxis/response_definition_spec.rb +22 -5
- data/spec/praxis/response_spec.rb +12 -5
- data/spec/praxis/responses/internal_server_error_spec.rb +4 -7
- data/spec/praxis/responses/validation_error_spec.rb +2 -2
- data/spec/praxis/router_spec.rb +8 -4
- data/spec/spec_app/config.ru +1 -6
- data/spec/spec_helper.rb +3 -3
- data/tasks/thor/templates/generator/empty_app/Gemfile +3 -3
- metadata +36 -32
- data/.ruby-version +0 -1
- data/lib/praxis/stats.rb +0 -113
- 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
|