wrest 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +3 -0
  3. data/LICENCE +1 -1
  4. data/README.md +29 -28
  5. data/bin/wrest +2 -1
  6. data/bin/wrest_shell.rb +10 -8
  7. data/lib/wrest/async_request/event_machine_backend.rb +3 -1
  8. data/lib/wrest/async_request/thread_backend.rb +5 -2
  9. data/lib/wrest/async_request/thread_pool.rb +4 -2
  10. data/lib/wrest/async_request.rb +7 -6
  11. data/lib/wrest/cache_proxy.rb +39 -28
  12. data/lib/wrest/caching/memcached.rb +21 -18
  13. data/lib/wrest/caching/redis.rb +22 -22
  14. data/lib/wrest/caching.rb +16 -14
  15. data/lib/wrest/callback.rb +19 -16
  16. data/lib/wrest/components/container/alias_accessors.rb +51 -47
  17. data/lib/wrest/components/container/typecaster.rb +146 -96
  18. data/lib/wrest/components/container.rb +171 -152
  19. data/lib/wrest/components/mutators/base.rb +43 -34
  20. data/lib/wrest/components/mutators/camel_to_snake_case.rb +7 -3
  21. data/lib/wrest/components/mutators/{xml_mini_type_caster.rb → xml_type_caster.rb} +29 -16
  22. data/lib/wrest/components/mutators.rb +21 -19
  23. data/lib/wrest/components/translators/content_types.rb +20 -16
  24. data/lib/wrest/components/translators/json.rb +19 -16
  25. data/lib/wrest/components/translators/txt.rb +19 -15
  26. data/lib/wrest/components/translators/xml/conversions.rb +56 -0
  27. data/lib/wrest/components/translators/xml.rb +60 -18
  28. data/lib/wrest/components/translators.rb +7 -6
  29. data/lib/wrest/components.rb +11 -8
  30. data/lib/wrest/core_ext/hash/conversions.rb +10 -10
  31. data/lib/wrest/core_ext/hash.rb +4 -2
  32. data/lib/wrest/core_ext/string/conversions.rb +14 -13
  33. data/lib/wrest/core_ext/string.rb +5 -3
  34. data/lib/wrest/exceptions.rb +4 -2
  35. data/lib/wrest/hash_with_case_insensitive_access.rb +8 -8
  36. data/lib/wrest/hash_with_indifferent_access.rb +442 -0
  37. data/lib/wrest/http_codes.rb +20 -19
  38. data/lib/wrest/http_shared/headers.rb +2 -0
  39. data/lib/wrest/http_shared/standard_headers.rb +2 -2
  40. data/lib/wrest/http_shared/standard_tokens.rb +8 -6
  41. data/lib/wrest/http_shared.rb +5 -3
  42. data/lib/wrest/multipart.rb +20 -11
  43. data/lib/wrest/native/connection_factory.rb +15 -11
  44. data/lib/wrest/native/delete.rb +15 -11
  45. data/lib/wrest/native/get.rb +60 -56
  46. data/lib/wrest/native/options.rb +15 -11
  47. data/lib/wrest/native/patch.rb +16 -12
  48. data/lib/wrest/native/post.rb +15 -11
  49. data/lib/wrest/native/post_multipart.rb +22 -18
  50. data/lib/wrest/native/put.rb +16 -12
  51. data/lib/wrest/native/put_multipart.rb +22 -18
  52. data/lib/wrest/native/redirection.rb +13 -12
  53. data/lib/wrest/native/request.rb +144 -108
  54. data/lib/wrest/native/response.rb +87 -78
  55. data/lib/wrest/native/session.rb +49 -40
  56. data/lib/wrest/native.rb +14 -12
  57. data/lib/wrest/test/request_patches.rb +10 -3
  58. data/lib/wrest/test.rb +3 -1
  59. data/lib/wrest/uri/builders.rb +14 -12
  60. data/lib/wrest/uri.rb +70 -52
  61. data/lib/wrest/uri_template.rb +11 -7
  62. data/lib/wrest/utils.rb +129 -0
  63. data/lib/wrest/version.rb +3 -1
  64. data/lib/wrest.rb +31 -33
  65. data/lib/wrest_no_ext.rb +2 -0
  66. metadata +98 -48
  67. data/lib/wrest/components/mutators/xml_simple_type_caster.rb +0 -37
  68. data/lib/wrest/xml_mini/jdom/xpath_filter.rb +0 -17
  69. data/lib/wrest/xml_mini/jdom.rb +0 -6
  70. data/lib/wrest/xml_mini/libxml/xpath_filter.rb +0 -12
  71. data/lib/wrest/xml_mini/libxml.rb +0 -8
  72. data/lib/wrest/xml_mini/nokogiri/xpath_filter.rb +0 -15
  73. data/lib/wrest/xml_mini/nokogiri.rb +0 -7
  74. data/lib/wrest/xml_mini/rexml/xpath_filter.rb +0 -15
  75. data/lib/wrest/xml_mini/rexml.rb +0 -8
  76. data/lib/wrest/xml_mini.rb +0 -8
data/lib/wrest.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright 2009 Sidu Ponnappa
2
4
  # Licensed under the Apache License, Version 2.0 (the "License");
3
5
  # you may not use this file except in compliance with the License.
@@ -14,18 +16,14 @@ require 'cgi'
14
16
  require 'base64'
15
17
  require 'logger'
16
18
  require 'benchmark'
17
- require 'multi_json'
18
19
  require 'concurrent'
19
- require 'active_support'
20
- require 'active_support/core_ext/string'
21
- require 'active_support/core_ext/hash'
22
- require 'active_support/core_ext/module'
23
- require 'active_support/core_ext/object'
20
+ require 'nokogiri'
21
+ require 'json'
24
22
 
25
23
  module Wrest
26
24
  Root = File.dirname(__FILE__)
27
25
 
28
- $:.unshift Root
26
+ $LOAD_PATH.unshift Root
29
27
 
30
28
  def self.logger=(logger)
31
29
  @logger = logger
@@ -36,44 +34,44 @@ module Wrest
36
34
  end
37
35
 
38
36
  def self.enable_evented_requests!
39
- require "wrest/event_machine_backend"
37
+ require 'wrest/event_machine_backend'
40
38
  end
41
39
 
42
40
  # Switch Wrest to using Net::HTTP.
43
41
  def self.use_native!
44
- silence_warnings{ Wrest.const_set('Http', Wrest::Native) }
42
+ old_verbose = $VERBOSE
43
+ $VERBOSE = nil
44
+ Wrest.const_set('Http', Wrest::Native)
45
+ ensure
46
+ $VERBOSE = old_verbose
45
47
  end
46
48
  end
47
49
 
48
- Wrest.logger = ActiveSupport::Logger.new(STDOUT)
50
+ Wrest.logger = Logger.new($stdout)
49
51
  Wrest.logger.level = Logger::DEBUG
50
52
 
51
- require "wrest/core_ext/string"
52
- require "wrest/hash_with_case_insensitive_access"
53
-
54
- # Load XmlMini Extensions
55
- require "wrest/xml_mini"
53
+ require 'wrest/utils'
54
+ require 'wrest/core_ext/string'
55
+ require 'wrest/hash_with_indifferent_access'
56
+ require 'wrest/hash_with_case_insensitive_access'
56
57
 
57
58
  # Load Wrest Core
58
- require "wrest/version"
59
- require "wrest/cache_proxy"
60
- require "wrest/http_shared"
61
- require "wrest/http_codes"
62
- require "wrest/callback"
63
- require "wrest/native"
59
+ require 'wrest/version'
60
+ require 'wrest/cache_proxy'
61
+ require 'wrest/http_shared'
62
+ require 'wrest/http_codes'
63
+ require 'wrest/callback'
64
+ require 'wrest/native'
64
65
 
65
- require "wrest/async_request/thread_pool"
66
- require "wrest/async_request/thread_backend"
67
- require "wrest/async_request"
66
+ require 'wrest/async_request/thread_pool'
67
+ require 'wrest/async_request/thread_backend'
68
+ require 'wrest/async_request'
68
69
 
69
- require "wrest/caching"
70
+ require 'wrest/caching'
70
71
 
71
72
  # Load Wrest Wrappers
72
- require "wrest/uri/builders"
73
- require "wrest/uri"
74
- require "wrest/uri_template"
75
- require "wrest/exceptions"
76
- require "wrest/components"
77
-
78
- # Load Wrest::Resource
79
- # require "wrest/resource"
73
+ require 'wrest/uri/builders'
74
+ require 'wrest/uri'
75
+ require 'wrest/uri_template'
76
+ require 'wrest/exceptions'
77
+ require 'wrest/components'
data/lib/wrest_no_ext.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Opts out of including Wrest's String Extensions
2
4
  module Wrest
3
5
  NoStringExtensions = true
metadata CHANGED
@@ -1,86 +1,142 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wrest
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sidu Ponnappa
8
8
  - Niranjan Paranjape
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-04-20 00:00:00.000000000 Z
12
+ date: 2022-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rspec
15
+ name: activesupport
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '3.3'
20
+ version: '6'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '3.3'
27
+ version: '6'
28
28
  - !ruby/object:Gem::Dependency
29
- name: sinatra
29
+ name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 1.0.0
34
+ version: '13.0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 1.0.0
41
+ version: '13.0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: activesupport
43
+ name: rdoc
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '5'
49
- type: :runtime
48
+ version: '6.4'
49
+ type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '5'
55
+ version: '6.4'
56
56
  - !ruby/object:Gem::Dependency
57
- name: builder
57
+ name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">"
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '2.0'
63
- type: :runtime
62
+ version: '3.11'
63
+ type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">"
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '2.0'
69
+ version: '3.11'
70
70
  - !ruby/object:Gem::Dependency
71
- name: multi_json
71
+ name: rubocop
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '1.0'
77
- type: :runtime
76
+ version: 1.35.0
77
+ type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '1.0'
83
+ version: 1.35.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: rubocop-rake
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rubocop-rspec
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: sinatra
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: 2.0.0
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: 2.0.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: webrick
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
84
140
  - !ruby/object:Gem::Dependency
85
141
  name: concurrent-ruby
86
142
  requirement: !ruby/object:Gem::Requirement
@@ -96,22 +152,22 @@ dependencies:
96
152
  - !ruby/object:Gem::Version
97
153
  version: '1.0'
98
154
  - !ruby/object:Gem::Dependency
99
- name: json
155
+ name: nokogiri
100
156
  requirement: !ruby/object:Gem::Requirement
101
157
  requirements:
102
158
  - - "~>"
103
159
  - !ruby/object:Gem::Version
104
- version: '2.0'
160
+ version: '1.0'
105
161
  type: :runtime
106
162
  prerelease: false
107
163
  version_requirements: !ruby/object:Gem::Requirement
108
164
  requirements:
109
165
  - - "~>"
110
166
  - !ruby/object:Gem::Version
111
- version: '2.0'
112
- description: Wrest is a fluent, easy-to-use, object oriented Ruby HTTP/REST client
167
+ version: '1.0'
168
+ description: "Wrest is a fluent, easy-to-use, object oriented Ruby HTTP/REST client
113
169
  library with support for RFC2616 HTTP caching, multiple HTTP backends and async
114
- calls. It runs on CRuby and JRuby and is in production use at substantial scale.
170
+ calls. It runs on CRuby and JRuby and is in production use at 10 * \U0001F984 scale."
115
171
  email:
116
172
  - ckponnappa@gmail.com
117
173
  executables:
@@ -142,19 +198,20 @@ files:
142
198
  - lib/wrest/components/mutators.rb
143
199
  - lib/wrest/components/mutators/base.rb
144
200
  - lib/wrest/components/mutators/camel_to_snake_case.rb
145
- - lib/wrest/components/mutators/xml_mini_type_caster.rb
146
- - lib/wrest/components/mutators/xml_simple_type_caster.rb
201
+ - lib/wrest/components/mutators/xml_type_caster.rb
147
202
  - lib/wrest/components/translators.rb
148
203
  - lib/wrest/components/translators/content_types.rb
149
204
  - lib/wrest/components/translators/json.rb
150
205
  - lib/wrest/components/translators/txt.rb
151
206
  - lib/wrest/components/translators/xml.rb
207
+ - lib/wrest/components/translators/xml/conversions.rb
152
208
  - lib/wrest/core_ext/hash.rb
153
209
  - lib/wrest/core_ext/hash/conversions.rb
154
210
  - lib/wrest/core_ext/string.rb
155
211
  - lib/wrest/core_ext/string/conversions.rb
156
212
  - lib/wrest/exceptions.rb
157
213
  - lib/wrest/hash_with_case_insensitive_access.rb
214
+ - lib/wrest/hash_with_indifferent_access.rb
158
215
  - lib/wrest/http_codes.rb
159
216
  - lib/wrest/http_shared.rb
160
217
  - lib/wrest/http_shared/headers.rb
@@ -180,21 +237,14 @@ files:
180
237
  - lib/wrest/uri.rb
181
238
  - lib/wrest/uri/builders.rb
182
239
  - lib/wrest/uri_template.rb
240
+ - lib/wrest/utils.rb
183
241
  - lib/wrest/version.rb
184
- - lib/wrest/xml_mini.rb
185
- - lib/wrest/xml_mini/jdom.rb
186
- - lib/wrest/xml_mini/jdom/xpath_filter.rb
187
- - lib/wrest/xml_mini/libxml.rb
188
- - lib/wrest/xml_mini/libxml/xpath_filter.rb
189
- - lib/wrest/xml_mini/nokogiri.rb
190
- - lib/wrest/xml_mini/nokogiri/xpath_filter.rb
191
- - lib/wrest/xml_mini/rexml.rb
192
- - lib/wrest/xml_mini/rexml/xpath_filter.rb
193
242
  - lib/wrest_no_ext.rb
194
- homepage: https://github.com/gojek-engineering/wrest
243
+ homepage: https://github.com/kaiwren/wrest
195
244
  licenses: []
196
- metadata: {}
197
- post_install_message:
245
+ metadata:
246
+ rubygems_mfa_required: 'true'
247
+ post_install_message:
198
248
  rdoc_options:
199
249
  - "--charset=UTF-8"
200
250
  require_paths:
@@ -203,20 +253,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
253
  requirements:
204
254
  - - ">="
205
255
  - !ruby/object:Gem::Version
206
- version: '0'
256
+ version: 2.6.0
207
257
  required_rubygems_version: !ruby/object:Gem::Requirement
208
258
  requirements:
209
259
  - - ">="
210
260
  - !ruby/object:Gem::Version
211
- version: 1.3.0
261
+ version: 3.0.0
212
262
  requirements:
213
263
  - To use Memcached as caching back-end, install the 'dalli' gem.
214
264
  - To use Redis as caching back-end, install the 'redis' gem.
215
265
  - To use multipart post, install the 'multipart-post' gem.
216
266
  - To use eventmachine as a parallel backend, install the 'eventmachine' gem.
217
- rubyforge_project: wrest
218
- rubygems_version: 2.5.1
219
- signing_key:
267
+ rubygems_version: 3.3.7
268
+ signing_key:
220
269
  specification_version: 4
221
- summary: Wrest is a fluent, object oriented HTTP client library for 2.x.x, JRuby 9.x
270
+ summary: Wrest is a fluent, object oriented HTTP client library for CRuby 2.6.x, 3.x.x
271
+ and JRuby 9.3.x.x
222
272
  test_files: []
@@ -1,37 +0,0 @@
1
- # Copyright 2009 Sidu Ponnappa
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
- # Unless required by applicable law or agreed to in writing, software distributed under the License
7
- # is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8
- # See the License for the specific language governing permissions and limitations under the License.
9
-
10
- module Wrest
11
- module Components
12
- # This mutator undertands how do type casting
13
- # using the type data embedded in a hash
14
- # created by deserialising an xml using
15
- # xml-simple
16
- class Mutators::XmlSimpleTypeCaster < Mutators::Base
17
- def do_mutate(tuple)
18
- out_key = tuple.first
19
- in_value = tuple.last[0]
20
- out_value = in_value
21
-
22
- case in_value
23
- when Hash
24
- if in_value['nil'] == 'true'
25
- out_value = nil
26
- elsif in_value.key?('type')
27
- out_value = ActiveSupport::XmlMini::PARSING[in_value['type']].call(in_value['content'])
28
- else
29
- out_value = in_value.mutate_using(self)
30
- end
31
- end
32
-
33
- [out_key, out_value]
34
- end
35
- end
36
- end
37
- end
@@ -1,17 +0,0 @@
1
- raise "JRuby is required to use the JDOM backend for XmlMini" unless RUBY_PLATFORM =~ /java/
2
-
3
-
4
-
5
-
6
- module XmlMini
7
- module JDOM
8
- module XPathFilter
9
- #Enables filtering of an xml response using a specified xpath
10
- #Returns an array of elements matching the xpath
11
- def filter(xml_body,xpath)
12
- raise NotImplementedError, "'filter' method is not implemented if JDOM backend is being used"
13
- end
14
-
15
- end
16
- end
17
- end
@@ -1,6 +0,0 @@
1
- require 'wrest/xml_mini/jdom/xpath_filter'
2
- module ActiveSupport
3
- module XmlMini_JDOM
4
- XmlMini_JDOM.extend(::XmlMini::JDOM::XPathFilter)
5
- end
6
- end
@@ -1,12 +0,0 @@
1
- module XmlMini
2
- module LibXML
3
- module XPathFilter
4
- #Enables filtering of an xml response using a specified xpath
5
- #Returns an array of elements matching the xpath
6
- def filter(xml_body,xpath)
7
- doc = ::LibXML::XML::Document.string(xml_body)
8
- doc.find(xpath).to_a
9
- end
10
- end
11
- end
12
- end
@@ -1,8 +0,0 @@
1
- require 'wrest/xml_mini/libxml/xpath_filter'
2
- module ActiveSupport
3
- module XmlMini_LibXML
4
- XmlMini_LibXML.extend(::XmlMini::LibXML::XPathFilter)
5
- end
6
- end
7
-
8
-
@@ -1,15 +0,0 @@
1
- module XmlMini
2
- module Nokogiri
3
- module XPathFilter
4
- #Enables filtering of an xml response using a specified xpath
5
- #Returns all elements that match the xpath
6
- def filter(xml_body,xpath)
7
- doc = ::Nokogiri::XML(xml_body)
8
- doc.xpath(xpath).to_a
9
- end
10
- end
11
- end
12
- end
13
-
14
-
15
-
@@ -1,7 +0,0 @@
1
- require 'wrest/xml_mini/nokogiri/xpath_filter'
2
- module ActiveSupport
3
- module XmlMini_Nokogiri
4
- XmlMini_Nokogiri.extend(::XmlMini::Nokogiri::XPathFilter)
5
- end
6
- end
7
-
@@ -1,15 +0,0 @@
1
- module XmlMini
2
- module Rexml
3
- module XPathFilter
4
- #Enables filtering of an xml response using a specified xpath
5
- #Returns an array of elements matching the xpath
6
- def filter(xml_body,xpath)
7
- doc = REXML::Document.new(xml_body)
8
- REXML::XPath.each(doc,xpath).to_a
9
- end
10
- end
11
- end
12
- end
13
-
14
-
15
-
@@ -1,8 +0,0 @@
1
- require 'wrest/xml_mini/rexml/xpath_filter'
2
- module ActiveSupport
3
- module XmlMini_REXML
4
- XmlMini_REXML.extend(::XmlMini::Rexml::XPathFilter)
5
- end
6
- end
7
-
8
-
@@ -1,8 +0,0 @@
1
- require 'wrest/xml_mini/libxml'
2
- require 'wrest/xml_mini/rexml'
3
- require 'wrest/xml_mini/nokogiri'
4
- module ActiveSupport
5
- module XmlMini
6
- delegate :filter, :to => :backend
7
- end
8
- end