spaceborne 0.1.12 → 0.1.13
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +36 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +1 -1
- data/Rakefile +3 -3
- data/lib/spaceborne.rb +119 -59
- data/lib/spaceborne/version.rb +1 -1
- data/spaceborne.gemspec +20 -19
- metadata +47 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6dcf5788db09b9481c533588b9195a5f2555c5eb
|
4
|
+
data.tar.gz: a9c53ea3c698e175a53689e1f8fac534dd29f7c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9eb5f6d3eccb530d6dcf8f3e74e60def75e9ce6cb6f3d54939a87260aa5b84ea479c65ec816d61660149389bc00bcd8a4738cfac9c1d73f627e7edcad669333c
|
7
|
+
data.tar.gz: 6df63627e5d075195d7b396e2b3c57ab7595e9a7313d987103e2378042b300d486b880cc0848a9871291c76fefc5e0e4a0d940e2bbaa3c8eff8260ee8e77273d
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
Style/FrozenStringLiteralComment:
|
2
|
+
Enabled: false
|
3
|
+
|
4
|
+
Metrics/BlockLength:
|
5
|
+
Exclude:
|
6
|
+
- 'Rakefile'
|
7
|
+
- '**/*.rake'
|
8
|
+
- 'spec/**/*.rb'
|
9
|
+
- '*.gemspec'
|
10
|
+
|
11
|
+
Metrics/MethodLength:
|
12
|
+
Exclude:
|
13
|
+
- 'bin/*'
|
14
|
+
|
15
|
+
Metrics/ModuleLength:
|
16
|
+
Exclude:
|
17
|
+
- 'Rakefile'
|
18
|
+
- '**/*.rake'
|
19
|
+
- 'spec/**/*.rb'
|
20
|
+
- 'bin/*'
|
21
|
+
|
22
|
+
Metrics/ClassLength:
|
23
|
+
Exclude:
|
24
|
+
- 'bin/*'
|
25
|
+
|
26
|
+
Metrics/LineLength:
|
27
|
+
Exclude:
|
28
|
+
- 'spec/airborne/**/*.rb'
|
29
|
+
|
30
|
+
Style/DateTime:
|
31
|
+
Exclude:
|
32
|
+
- 'spec/airborne/**/*.rb'
|
33
|
+
|
34
|
+
Lint/RescueException:
|
35
|
+
Exclude:
|
36
|
+
- 'lib/spaceborne.rb'
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
spaceborne
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.4.1
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
data/lib/spaceborne.rb
CHANGED
@@ -1,80 +1,140 @@
|
|
1
1
|
require 'airborne'
|
2
|
-
require
|
2
|
+
require 'spaceborne/version'
|
3
3
|
require 'rest-client'
|
4
4
|
require 'byebug'
|
5
5
|
require 'json'
|
6
6
|
|
7
|
+
# module for apitesting with spaceborne
|
7
8
|
module Spaceborne
|
8
|
-
def
|
9
|
-
headers.
|
9
|
+
def json?(headers)
|
10
|
+
headers.key?(:content_type) &&
|
11
|
+
headers[:content_type].include?('application/json')
|
10
12
|
end
|
11
|
-
|
12
|
-
|
13
|
+
|
14
|
+
def add_time
|
15
|
+
"TIME: #{Time.now.strftime('%d/%m/%Y %H:%M')}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def add_request
|
19
|
+
if @request_body
|
20
|
+
"REQUEST: #{response.request.method.upcase} #{response.request.url}"\
|
21
|
+
" HEADERS:\n#{JSON.pretty_generate(response.request.headers)}"\
|
22
|
+
" PAYLOAD:\n#{@request_body}"
|
23
|
+
else
|
24
|
+
''
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def add_response
|
29
|
+
"RESPONSE: #{response.code}"\
|
30
|
+
" HEADERS:\n#{JSON.pretty_generate(response.headers)}"\
|
31
|
+
<< response_body
|
32
|
+
end
|
33
|
+
|
34
|
+
def response_body
|
35
|
+
return '' if response.request.method.casecmp('head').zero?
|
36
|
+
str = if json?(response.headers)
|
37
|
+
" JSON_BODY\n#{JSON.pretty_generate(json_body)}"
|
38
|
+
else
|
39
|
+
" BODY\n#{response.body}"
|
40
|
+
end
|
41
|
+
str
|
42
|
+
end
|
43
|
+
|
44
|
+
def request_info(str = '')
|
45
|
+
str << add_time << add_request << add_response
|
46
|
+
str
|
47
|
+
end
|
48
|
+
|
49
|
+
def wrap_request
|
50
|
+
yield
|
13
51
|
rescue Exception => e
|
14
52
|
raise e unless response
|
15
|
-
puts
|
16
|
-
puts "REQUEST: #{response.request.method.upcase} #{response.request.url}"
|
17
|
-
puts " HEADERS:\n#{JSON::pretty_generate(response.request.headers)}"
|
18
|
-
puts " PAYLOAD:\n#{@request_body}" if @request_body
|
19
|
-
puts "RESPONSE: #{response.code}"
|
20
|
-
puts " HEADERS:\n#{JSON::pretty_generate(response.headers)}"
|
21
|
-
if response.request.method.downcase != 'head'
|
22
|
-
if is_json?(response.headers)
|
23
|
-
puts " JSON_BODY\n#{JSON::pretty_generate(json_body)}"
|
24
|
-
else
|
25
|
-
puts " BODY\n#{response.body}"
|
26
|
-
end
|
27
|
-
end
|
53
|
+
puts request_info
|
28
54
|
raise e
|
29
55
|
end
|
30
56
|
end
|
31
57
|
|
58
|
+
# monkeypatch Airborne
|
32
59
|
module Airborne
|
33
60
|
def json_body
|
34
61
|
@json_body ||= JSON.parse(response.body, symbolize_names: true)
|
35
|
-
rescue
|
36
|
-
|
62
|
+
rescue StandardError
|
63
|
+
raise InvalidJsonError, 'Api request returned invalid json'
|
37
64
|
end
|
65
|
+
|
66
|
+
# spaceborne enhancements
|
38
67
|
module RestClientRequester
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
68
|
+
def body?(method)
|
69
|
+
case method
|
70
|
+
when :post, :patch, :put
|
71
|
+
true
|
72
|
+
else
|
73
|
+
false
|
45
74
|
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def split_options(options)
|
78
|
+
local = {}
|
79
|
+
local[:nonjson_data] = options.dig(:headers, :nonjson_data)
|
80
|
+
options[:headers].delete(:nonjson_data) if local[:nonjson_data]
|
81
|
+
local[:is_hash] = options[:body].is_a?(Hash)
|
82
|
+
local[:proxy] = options.dig(:headers, :use_proxy)
|
83
|
+
local
|
84
|
+
end
|
85
|
+
|
86
|
+
def calc_headers(options, local)
|
46
87
|
headers = base_headers.merge(options[:headers] || {})
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
if options[:body].is_a?(Hash)
|
51
|
-
if headers.delete(:nonjson_data)
|
52
|
-
headers.delete('Content-Type')
|
53
|
-
else
|
54
|
-
headers.merge!(no_restclient_headers: true)
|
55
|
-
@request_body = @request_body.to_json
|
56
|
-
end
|
57
|
-
end
|
58
|
-
RestClient.send(method, get_url(url), @request_body, headers)
|
59
|
-
rescue RestClient::Exception => e
|
60
|
-
e.response
|
61
|
-
end
|
88
|
+
return headers unless local[:is_hash]
|
89
|
+
if options[:nonjson_data]
|
90
|
+
headers.delete('Content-Type')
|
62
91
|
else
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
92
|
+
headers[:no_restclient_headers] = true
|
93
|
+
end
|
94
|
+
headers
|
95
|
+
end
|
96
|
+
|
97
|
+
def handle_proxy(options, local)
|
98
|
+
return unless local[:proxy]
|
99
|
+
RestClient.proxy = local[:proxy]
|
100
|
+
options[:headers].delete(:use_proxy)
|
101
|
+
end
|
102
|
+
|
103
|
+
def calc_body(options, local)
|
104
|
+
return '' unless options[:body]
|
105
|
+
if local[:nonjson_data] || !local[:is_hash]
|
106
|
+
options[:body]
|
107
|
+
else
|
108
|
+
options[:body].to_json
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def send_restclient(method, url, body, headers)
|
113
|
+
if body?(method)
|
114
|
+
RestClient.send(method, url, body, headers)
|
115
|
+
else
|
116
|
+
RestClient.send(method, url, headers)
|
68
117
|
end
|
69
|
-
|
118
|
+
end
|
119
|
+
|
120
|
+
def make_request(method, url, options = {})
|
121
|
+
local_options = split_options(options)
|
122
|
+
handle_proxy(options, local_options)
|
123
|
+
hdrs = calc_headers(options, local_options)
|
124
|
+
send_restclient(method, get_url(url),
|
125
|
+
calc_body(options, local_options), hdrs)
|
126
|
+
rescue RestClient::Exception => e
|
127
|
+
e.response
|
70
128
|
end
|
71
129
|
|
72
130
|
private
|
131
|
+
|
73
132
|
def base_headers
|
74
133
|
{ content_type: :json }.merge(Airborne.configuration.headers || {})
|
75
134
|
end
|
76
135
|
end
|
77
136
|
|
137
|
+
# Extend airborne's expectations
|
78
138
|
module RequestExpectations
|
79
139
|
def call_with_relative_path(data, args)
|
80
140
|
if args.length == 2
|
@@ -111,17 +171,14 @@ module Airborne
|
|
111
171
|
end
|
112
172
|
end
|
113
173
|
|
174
|
+
# extension to handle hash value checking
|
114
175
|
module PathMatcher
|
115
176
|
def get_by_path(path, json, &block)
|
116
|
-
|
177
|
+
raise PathError, "Invalid Path, contains '..'" if /\.\./ =~ path
|
117
178
|
type = false
|
118
|
-
|
119
|
-
parts = path.to_s.split('.')
|
120
|
-
else
|
121
|
-
parts = path.split('.')
|
122
|
-
end
|
179
|
+
parts = path.to_s.split('.')
|
123
180
|
parts.each_with_index do |part, index|
|
124
|
-
if
|
181
|
+
if %w[* ?].include?(part)
|
125
182
|
ensure_array_or_hash(path, json)
|
126
183
|
type = part
|
127
184
|
if index < parts.length.pred
|
@@ -131,8 +188,9 @@ module Airborne
|
|
131
188
|
end
|
132
189
|
begin
|
133
190
|
json = process_json(part, json)
|
134
|
-
rescue
|
135
|
-
raise PathError,
|
191
|
+
rescue StandardError
|
192
|
+
raise PathError,
|
193
|
+
"Expected #{json.class}\nto be an object with property #{part}"
|
136
194
|
end
|
137
195
|
end
|
138
196
|
if type == '*'
|
@@ -140,7 +198,7 @@ module Airborne
|
|
140
198
|
when 'Array'
|
141
199
|
expect_all(json, &block)
|
142
200
|
when 'Hash'
|
143
|
-
json.each do |k,
|
201
|
+
json.each do |k, _v|
|
144
202
|
yield json[k]
|
145
203
|
end
|
146
204
|
end
|
@@ -152,8 +210,10 @@ module Airborne
|
|
152
210
|
end
|
153
211
|
|
154
212
|
def ensure_array_or_hash(path, json)
|
155
|
-
|
156
|
-
|
213
|
+
return if json.class == Array || json.class == Hash
|
214
|
+
raise RSpec::Expectations::ExpectationNotMetError,
|
215
|
+
"Expected #{path} to be array or hash, got #{json.class}"\
|
216
|
+
' from JSON response'
|
157
217
|
end
|
158
218
|
end
|
159
219
|
end
|
data/lib/spaceborne/version.rb
CHANGED
data/spaceborne.gemspec
CHANGED
@@ -1,34 +1,35 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'spaceborne/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
6
|
+
spec.name = 'spaceborne'
|
8
7
|
spec.version = Spaceborne::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
8
|
+
spec.authors = ['Keith Williams']
|
9
|
+
spec.email = ['keithrw@comcast.net']
|
11
10
|
|
12
11
|
spec.summary = 'Gem supporting API testing'
|
13
12
|
spec.description = 'Extends brooklynDev/airborne'
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
13
|
+
spec.homepage = 'https://github.com/keithrw54/spaceborne.git'
|
14
|
+
spec.license = 'MIT'
|
16
15
|
|
17
|
-
spec.files = `git ls-files -z`.split("\x0").reject
|
18
|
-
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
18
|
+
end
|
19
|
+
spec.bindir = 'exe'
|
19
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
-
spec.require_paths = [
|
21
|
+
spec.require_paths = ['lib']
|
21
22
|
|
22
|
-
spec.add_runtime_dependency 'rspec', '~> 3.1'
|
23
|
-
spec.add_runtime_dependency 'rest-client', '< 3.0', '>= 1.7.3'
|
24
|
-
spec.add_runtime_dependency 'rack-test', '~> 0.6', '>= 0.6.2'
|
25
|
-
spec.add_runtime_dependency 'rack'
|
26
23
|
spec.add_runtime_dependency 'activesupport'
|
27
|
-
spec.add_runtime_dependency
|
28
|
-
spec.add_runtime_dependency
|
24
|
+
spec.add_runtime_dependency 'airborne', '~> 0.2.13'
|
25
|
+
spec.add_runtime_dependency 'curlyrest', '~> 0.1.0'
|
26
|
+
spec.add_runtime_dependency 'rack'
|
27
|
+
spec.add_runtime_dependency 'rack-test', '~> 0.6', '>= 0.6.2'
|
28
|
+
spec.add_runtime_dependency 'rest-client', '< 3.0', '>= 1.7.3'
|
29
|
+
spec.add_runtime_dependency 'rspec', '~> 3.1'
|
29
30
|
spec.add_development_dependency 'webmock', '~> 0'
|
30
31
|
|
31
|
-
spec.add_development_dependency
|
32
|
-
spec.add_development_dependency
|
33
|
-
spec.add_development_dependency
|
32
|
+
spec.add_development_dependency 'bundler', '~> 1.11'
|
33
|
+
spec.add_development_dependency 'byebug', '~> 2.0'
|
34
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
34
35
|
end
|
metadata
CHANGED
@@ -1,69 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spaceborne
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keith Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: airborne
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '3.0'
|
34
|
-
- - ">="
|
31
|
+
- - "~>"
|
35
32
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
33
|
+
version: 0.2.13
|
37
34
|
type: :runtime
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
|
-
- - "
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '3.0'
|
44
|
-
- - ">="
|
38
|
+
- - "~>"
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
40
|
+
version: 0.2.13
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
42
|
+
name: curlyrest
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 0.6.2
|
47
|
+
version: 0.1.0
|
57
48
|
type: :runtime
|
58
49
|
prerelease: false
|
59
50
|
version_requirements: !ruby/object:Gem::Requirement
|
60
51
|
requirements:
|
61
52
|
- - "~>"
|
62
53
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
64
|
-
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: 0.6.2
|
54
|
+
version: 0.1.0
|
67
55
|
- !ruby/object:Gem::Dependency
|
68
56
|
name: rack
|
69
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -79,47 +67,59 @@ dependencies:
|
|
79
67
|
- !ruby/object:Gem::Version
|
80
68
|
version: '0'
|
81
69
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
70
|
+
name: rack-test
|
83
71
|
requirement: !ruby/object:Gem::Requirement
|
84
72
|
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.6'
|
85
76
|
- - ">="
|
86
77
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
78
|
+
version: 0.6.2
|
88
79
|
type: :runtime
|
89
80
|
prerelease: false
|
90
81
|
version_requirements: !ruby/object:Gem::Requirement
|
91
82
|
requirements:
|
83
|
+
- - "~>"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0.6'
|
92
86
|
- - ">="
|
93
87
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
88
|
+
version: 0.6.2
|
95
89
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
90
|
+
name: rest-client
|
97
91
|
requirement: !ruby/object:Gem::Requirement
|
98
92
|
requirements:
|
99
|
-
- - "
|
93
|
+
- - "<"
|
100
94
|
- !ruby/object:Gem::Version
|
101
|
-
version: 0
|
95
|
+
version: '3.0'
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 1.7.3
|
102
99
|
type: :runtime
|
103
100
|
prerelease: false
|
104
101
|
version_requirements: !ruby/object:Gem::Requirement
|
105
102
|
requirements:
|
106
|
-
- - "
|
103
|
+
- - "<"
|
107
104
|
- !ruby/object:Gem::Version
|
108
|
-
version: 0
|
105
|
+
version: '3.0'
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: 1.7.3
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
|
-
name:
|
110
|
+
name: rspec
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
113
|
- - "~>"
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version:
|
115
|
+
version: '3.1'
|
116
116
|
type: :runtime
|
117
117
|
prerelease: false
|
118
118
|
version_requirements: !ruby/object:Gem::Requirement
|
119
119
|
requirements:
|
120
120
|
- - "~>"
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version:
|
122
|
+
version: '3.1'
|
123
123
|
- !ruby/object:Gem::Dependency
|
124
124
|
name: webmock
|
125
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,33 +149,33 @@ dependencies:
|
|
149
149
|
- !ruby/object:Gem::Version
|
150
150
|
version: '1.11'
|
151
151
|
- !ruby/object:Gem::Dependency
|
152
|
-
name:
|
152
|
+
name: byebug
|
153
153
|
requirement: !ruby/object:Gem::Requirement
|
154
154
|
requirements:
|
155
155
|
- - "~>"
|
156
156
|
- !ruby/object:Gem::Version
|
157
|
-
version: '
|
157
|
+
version: '2.0'
|
158
158
|
type: :development
|
159
159
|
prerelease: false
|
160
160
|
version_requirements: !ruby/object:Gem::Requirement
|
161
161
|
requirements:
|
162
162
|
- - "~>"
|
163
163
|
- !ruby/object:Gem::Version
|
164
|
-
version: '
|
164
|
+
version: '2.0'
|
165
165
|
- !ruby/object:Gem::Dependency
|
166
|
-
name:
|
166
|
+
name: rake
|
167
167
|
requirement: !ruby/object:Gem::Requirement
|
168
168
|
requirements:
|
169
169
|
- - "~>"
|
170
170
|
- !ruby/object:Gem::Version
|
171
|
-
version: '
|
171
|
+
version: '10.0'
|
172
172
|
type: :development
|
173
173
|
prerelease: false
|
174
174
|
version_requirements: !ruby/object:Gem::Requirement
|
175
175
|
requirements:
|
176
176
|
- - "~>"
|
177
177
|
- !ruby/object:Gem::Version
|
178
|
-
version: '
|
178
|
+
version: '10.0'
|
179
179
|
description: Extends brooklynDev/airborne
|
180
180
|
email:
|
181
181
|
- keithrw@comcast.net
|
@@ -185,6 +185,9 @@ extra_rdoc_files: []
|
|
185
185
|
files:
|
186
186
|
- ".gitignore"
|
187
187
|
- ".rspec"
|
188
|
+
- ".rubocop.yml"
|
189
|
+
- ".ruby-gemset"
|
190
|
+
- ".ruby-version"
|
188
191
|
- Gemfile
|
189
192
|
- LICENSE.txt
|
190
193
|
- README.md
|