saddle 0.0.31 → 0.0.32
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.
- data/Gemfile +4 -0
- data/Gemfile.lock +8 -0
- data/lib/saddle/endpoint.rb +3 -11
- data/lib/saddle/method_tree_builder.rb +23 -23
- data/lib/saddle/middleware/logging/statsd.rb +3 -1
- data/lib/saddle/version.rb +1 -1
- data/spec/middleware/instrumentation_spec.rb +2 -6
- data/spec/middleware/logging/airbrake_spec.rb +2 -2
- data/spec/middleware/logging/rails_spec.rb +2 -2
- data/spec/middleware/logging/statsd_spec.rb +2 -2
- data/spec/middleware/request/retry_spec.rb +1 -3
- data/spec/middleware/response/default_response_spec.rb +1 -2
- data/spec/multiple_spec.rb +5 -5
- data/spec/requester/get_spec.rb +2 -1
- data/spec/requester/post_spec.rb +2 -1
- metadata +1 -1
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -9,6 +9,7 @@ GEM
|
|
9
9
|
builder
|
10
10
|
json
|
11
11
|
builder (3.2.0)
|
12
|
+
coderay (1.0.9)
|
12
13
|
diff-lcs (1.2.4)
|
13
14
|
faraday (0.8.7)
|
14
15
|
multipart-post (~> 1.1)
|
@@ -16,8 +17,13 @@ GEM
|
|
16
17
|
faraday (>= 0.7.4, < 0.9)
|
17
18
|
i18n (0.6.1)
|
18
19
|
json (1.7.7)
|
20
|
+
method_source (0.8.1)
|
19
21
|
multi_json (1.7.3)
|
20
22
|
multipart-post (1.2.0)
|
23
|
+
pry (0.9.12.2)
|
24
|
+
coderay (~> 1.0.5)
|
25
|
+
method_source (~> 0.8)
|
26
|
+
slop (~> 3.4)
|
21
27
|
rspec (2.13.0)
|
22
28
|
rspec-core (~> 2.13.0)
|
23
29
|
rspec-expectations (~> 2.13.0)
|
@@ -27,6 +33,7 @@ GEM
|
|
27
33
|
diff-lcs (>= 1.1.3, < 2.0)
|
28
34
|
rspec-instafail (0.2.4)
|
29
35
|
rspec-mocks (2.13.1)
|
36
|
+
slop (3.4.5)
|
30
37
|
statsd-ruby (1.2.0)
|
31
38
|
|
32
39
|
PLATFORMS
|
@@ -37,6 +44,7 @@ DEPENDENCIES
|
|
37
44
|
airbrake
|
38
45
|
faraday (~> 0.8.7)
|
39
46
|
faraday_middleware (~> 0.9.0)
|
47
|
+
pry
|
40
48
|
rspec (~> 2.13.0)
|
41
49
|
rspec-instafail (~> 0.2)
|
42
50
|
statsd-ruby
|
data/lib/saddle/endpoint.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'active_support'
|
1
|
+
require 'active_support/core_ext/string'
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -66,11 +66,7 @@ module Saddle
|
|
66
66
|
# Create the new endpoint
|
67
67
|
endpoint_instance = endpoint_class.new(@requester, method_name, self)
|
68
68
|
# Attach the endpoint as an instance variable and method
|
69
|
-
method_name ||=
|
70
|
-
ActiveSupport::Inflector.demodulize(
|
71
|
-
endpoint_class.name
|
72
|
-
)
|
73
|
-
)
|
69
|
+
method_name ||= endpoint_class.name.demodulize.underscore
|
74
70
|
self.instance_variable_set("@#{method_name}", endpoint_instance)
|
75
71
|
self.class.class_eval { define_method(method_name) { endpoint_instance } }
|
76
72
|
endpoint_instance
|
@@ -115,11 +111,7 @@ module Saddle
|
|
115
111
|
if _is_root?
|
116
112
|
nil
|
117
113
|
else
|
118
|
-
|
119
|
-
ActiveSupport::Inflector.demodulize(
|
120
|
-
self.class.name
|
121
|
-
)
|
122
|
-
)
|
114
|
+
self.class.name.demodulize.underscore
|
123
115
|
end
|
124
116
|
end
|
125
117
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'active_support'
|
1
|
+
require 'active_support/core_ext/string'
|
2
2
|
|
3
3
|
require 'saddle/endpoint'
|
4
4
|
|
@@ -16,9 +16,12 @@ module Saddle
|
|
16
16
|
# Build out the endpoint structure from the root of the implementation
|
17
17
|
def build_tree(requester)
|
18
18
|
root_node = build_root_node(requester)
|
19
|
-
#
|
20
|
-
if
|
21
|
-
|
19
|
+
# Search out the implementations directory structure for endpoints
|
20
|
+
if defined?(self.implementation_root)
|
21
|
+
# For each endpoints directory, recurse down it to load the modules
|
22
|
+
endpoints_directories.each do |endpoints_directories|
|
23
|
+
Dir["#{endpoints_directories}/**/*.rb"].each { |f| require(f) }
|
24
|
+
end
|
22
25
|
build_node_children(self.endpoints_module, root_node, requester)
|
23
26
|
end
|
24
27
|
root_node
|
@@ -28,14 +31,14 @@ module Saddle
|
|
28
31
|
# Build our root node here. The root node is special in that it lives below
|
29
32
|
# the 'endpoints' directory, and so we need to manually check if it exists.
|
30
33
|
def build_root_node(requester)
|
31
|
-
if
|
34
|
+
if defined?(self.implementation_root)
|
32
35
|
root_endpoint_file = File.join(
|
33
36
|
self.implementation_root,
|
34
37
|
'root_endpoint.rb'
|
35
38
|
)
|
36
39
|
if File.file?(root_endpoint_file)
|
37
40
|
# Load it and create our base endpoint
|
38
|
-
|
41
|
+
require(root_endpoint_file)
|
39
42
|
# RootEndpoint is the special class name for a root endpoint
|
40
43
|
root_node_class = self.implementation_module::RootEndpoint
|
41
44
|
else
|
@@ -52,6 +55,7 @@ module Saddle
|
|
52
55
|
|
53
56
|
# Build out the traversal tree by module namespace
|
54
57
|
def build_node_children(current_module, current_node, requester)
|
58
|
+
return unless current_module
|
55
59
|
current_module.constants.each do |const_symbol|
|
56
60
|
const = current_module.const_get(const_symbol)
|
57
61
|
|
@@ -60,7 +64,7 @@ module Saddle
|
|
60
64
|
# Build the branch out with a base endpoint
|
61
65
|
branch_node = current_node._build_and_attach_node(
|
62
66
|
Saddle::TraversalEndpoint,
|
63
|
-
|
67
|
+
const_symbol.underscore
|
64
68
|
)
|
65
69
|
# Build out the branch's endpoints on the new branch node
|
66
70
|
self.build_node_children(const, branch_node, requester)
|
@@ -78,27 +82,23 @@ module Saddle
|
|
78
82
|
# Get the module that the client implementation belongs to. This will act
|
79
83
|
# as the root namespace for endpoint traversal and construction
|
80
84
|
def implementation_module
|
81
|
-
::
|
82
|
-
|
83
|
-
|
85
|
+
self.name.split('::')[0..-2].join('::').constantize
|
86
|
+
end
|
87
|
+
|
88
|
+
# Get all directories under the implementation root named 'endpoints'
|
89
|
+
# This search allows for flexible structuring of gem
|
90
|
+
def endpoints_directories
|
91
|
+
Dir["#{implementation_root}/**/"].select { |d| d.ends_with?('endpoints/') }
|
84
92
|
end
|
85
93
|
|
86
94
|
# Get the Endpoints module that lives within this implementation's
|
87
95
|
# namespace
|
88
96
|
def endpoints_module
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
def endpoints_directory
|
95
|
-
File.join(self.implementation_root, 'endpoints')
|
96
|
-
end
|
97
|
-
|
98
|
-
# If this client was not fully constructed, it may not even have an
|
99
|
-
# implementation root. Allow that behavior to avoid filesystem searching.
|
100
|
-
def knows_root?
|
101
|
-
defined?(self.implementation_root)
|
97
|
+
begin
|
98
|
+
implementation_module.const_get('Endpoints')
|
99
|
+
rescue NameError
|
100
|
+
nil # If there is no endpoints module, we just won't load any
|
101
|
+
end
|
102
102
|
end
|
103
103
|
|
104
104
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'active_support/core_ext/string'
|
2
|
+
|
1
3
|
require 'statsd'
|
2
4
|
require 'faraday'
|
3
5
|
|
@@ -36,7 +38,7 @@ module Saddle
|
|
36
38
|
elsif env[:request][:saddle]
|
37
39
|
statsd_path_components = [
|
38
40
|
'saddle',
|
39
|
-
|
41
|
+
env[:request][:saddle][:client].name.underscore,
|
40
42
|
]
|
41
43
|
if env[:request][:saddle][:call_chain] && env[:request][:saddle][:action]
|
42
44
|
statsd_path_components += env[:request][:saddle][:call_chain]
|
data/lib/saddle/version.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
|
-
require '
|
2
|
-
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
3
|
|
5
4
|
describe 'FaradayMiddleware::Instrumentation' do
|
6
5
|
|
7
6
|
context "test integration of instrumentation middleware" do
|
8
7
|
|
9
|
-
it "with a request" do
|
8
|
+
it "with a request should not bomb" do
|
10
9
|
client = Saddle::Client.create(
|
11
10
|
:stubs => Faraday::Adapter::Test::Stubs.new do |stub|
|
12
11
|
stub.get('/test') {
|
@@ -19,9 +18,6 @@ describe 'FaradayMiddleware::Instrumentation' do
|
|
19
18
|
end
|
20
19
|
)
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
21
|
client.requester.get('/test').should == 'Party on!'
|
26
22
|
end
|
27
23
|
|
data/spec/multiple_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
2
|
-
require 'saddle'
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
###
|
4
|
+
# Make sure that multiple implementations of Saddle clients don't conflict with
|
5
|
+
# each other's middleware.
|
6
|
+
###
|
7
7
|
|
8
8
|
describe Saddle::Client do
|
9
9
|
|
data/spec/requester/get_spec.rb
CHANGED
data/spec/requester/post_spec.rb
CHANGED