simple_endpoint 0.1.2
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 +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.rubocop.yml +13 -0
- data/.travis.yml +5 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +63 -0
- data/LICENSE +21 -0
- data/README.md +247 -0
- data/Rakefile +8 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/lib/simple_endpoint/version.rb +5 -0
- data/lib/simple_endpoint.rb +126 -0
- data/simple_endpoint.gemspec +40 -0
- metadata +128 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a8d160bdac054393e08f0451d7117a710140cd02614d8bc7d212de43e8fe4caf
|
4
|
+
data.tar.gz: e6af102683834cf488a5dce4589e27c356e0994485679722a94569cae8a2e258
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f20a4512bbce57067e072a6f7d67b73a88fd606b5b9e01af7d71ab7b4460d9e71c603e05e3205853506d4f05d8295eef121f07a7e730cad610ed4a878d038f04
|
7
|
+
data.tar.gz: a46a439a455f21f4e83914210aeeb1d4b6fa29996cc4fbb1499484baee633bc58abf7f1b264f7cc767fe54e2d5f64dcc1969045a5f45879dc6dcbe1632f8feec
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
simple_endpoint (0.1.2)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
ast (2.4.0)
|
10
|
+
byebug (10.0.2)
|
11
|
+
coderay (1.1.2)
|
12
|
+
diff-lcs (1.3)
|
13
|
+
jaro_winkler (1.5.1)
|
14
|
+
method_source (0.9.2)
|
15
|
+
parallel (1.12.1)
|
16
|
+
parser (2.5.3.0)
|
17
|
+
ast (~> 2.4.0)
|
18
|
+
powerpack (0.1.2)
|
19
|
+
pry (0.12.2)
|
20
|
+
coderay (~> 1.1.0)
|
21
|
+
method_source (~> 0.9.0)
|
22
|
+
pry-byebug (3.6.0)
|
23
|
+
byebug (~> 10.0)
|
24
|
+
pry (~> 0.10)
|
25
|
+
rainbow (3.0.0)
|
26
|
+
rake (10.5.0)
|
27
|
+
rspec (3.8.0)
|
28
|
+
rspec-core (~> 3.8.0)
|
29
|
+
rspec-expectations (~> 3.8.0)
|
30
|
+
rspec-mocks (~> 3.8.0)
|
31
|
+
rspec-core (3.8.0)
|
32
|
+
rspec-support (~> 3.8.0)
|
33
|
+
rspec-expectations (3.8.2)
|
34
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
35
|
+
rspec-support (~> 3.8.0)
|
36
|
+
rspec-mocks (3.8.0)
|
37
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
38
|
+
rspec-support (~> 3.8.0)
|
39
|
+
rspec-support (3.8.0)
|
40
|
+
rubocop (0.60.0)
|
41
|
+
jaro_winkler (~> 1.5.1)
|
42
|
+
parallel (~> 1.10)
|
43
|
+
parser (>= 2.5, != 2.5.1.1)
|
44
|
+
powerpack (~> 0.1)
|
45
|
+
rainbow (>= 2.2.2, < 4.0)
|
46
|
+
ruby-progressbar (~> 1.7)
|
47
|
+
unicode-display_width (~> 1.4.0)
|
48
|
+
ruby-progressbar (1.10.0)
|
49
|
+
unicode-display_width (1.4.0)
|
50
|
+
|
51
|
+
PLATFORMS
|
52
|
+
ruby
|
53
|
+
|
54
|
+
DEPENDENCIES
|
55
|
+
bundler (~> 1.16)
|
56
|
+
pry-byebug
|
57
|
+
rake (~> 10.0)
|
58
|
+
rspec (~> 3.0)
|
59
|
+
rubocop
|
60
|
+
simple_endpoint!
|
61
|
+
|
62
|
+
BUNDLED WITH
|
63
|
+
1.16.2
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2019 differencialx
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,247 @@
|
|
1
|
+
# SimpleEndpoint
|
2
|
+
|
3
|
+
Dry-matcher free implementation of trailblazer endpoint.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
Add this to your Gemfile:
|
7
|
+
|
8
|
+
```ruby
|
9
|
+
gem 'simple_endpoint' # not released yet
|
10
|
+
gem 'simple_endpoint', github: 'differencialx/simple_endpoint', :branch => 'master'
|
11
|
+
```
|
12
|
+
|
13
|
+
## Getting Started
|
14
|
+
|
15
|
+
Include simple endpoint to your base controller
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
class ApplicationController < ActionController::Base
|
19
|
+
include SimpleEndpoint::Controller
|
20
|
+
end
|
21
|
+
```
|
22
|
+
|
23
|
+
Define `default_cases` method to specify trailblazer operation result handling
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
class ApplicationController < ActionController::Base
|
27
|
+
include SimpleEndpoint::Controller
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def default_cases
|
32
|
+
{
|
33
|
+
success: -> (result) { result.success? },
|
34
|
+
invalid: -> (result) { result.failure? }
|
35
|
+
}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
```
|
39
|
+
|
40
|
+
Define `default_handler` method to specify how to handle each case
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
class ApplicationController < ActionController::Base
|
44
|
+
include SimpleEndpoint::Controller
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def default_handler
|
49
|
+
{
|
50
|
+
success: -> (result) { render json: result['model'], **result['render_options'] status: 200 },
|
51
|
+
invalid: -> (result) { render json: result['contract.default'].errors, serializer: ErrorSerializer, status: :unprocessable_entity }
|
52
|
+
}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
```
|
56
|
+
|
57
|
+
`OperationIsNotHandled` error will be raised if `#default_cases` doesn't contain case for specific operation result.
|
58
|
+
|
59
|
+
`UnhadledResultError` will be raised if `#default_handler` doesn't contain for some cases.
|
60
|
+
|
61
|
+
`NotImplementedError` will be raised if `default_cases` or `default_handler` methods aren't defined.
|
62
|
+
|
63
|
+
|
64
|
+
### #endpoint method
|
65
|
+
|
66
|
+
Now you are able to use `endpoint` method at other controllers
|
67
|
+
|
68
|
+
`#endpoint` method has next signature:
|
69
|
+
|
70
|
+
| Key | Required | Default value | Description |
|
71
|
+
|---|---|---|---|
|
72
|
+
| `:operation` | yes | - | Traiblazer operation class |
|
73
|
+
| `:different_cases`| no | {} | Cases that should be redefined for exact `#endpoint` call |
|
74
|
+
| `:different_handler` | no | {} | Case of handler that should be handled in different way |
|
75
|
+
| `:options` | no | {} | Additional hash which will be merged to `#ednpoint_options` method result before operation execution |
|
76
|
+
| `:before_render` | no | {} | Allow to process code before specific case handler |
|
77
|
+
|
78
|
+
|
79
|
+
#### Simple endpoint call
|
80
|
+
```ruby
|
81
|
+
class PostsController < ApplicationController
|
82
|
+
def create
|
83
|
+
endpoint operation: Post::Create
|
84
|
+
end
|
85
|
+
end
|
86
|
+
```
|
87
|
+
|
88
|
+
#### Redefining cases for specific controller
|
89
|
+
|
90
|
+
If you need to redefine operation result handling for specific controller you can do next
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
class PostsController < ApplicationController
|
94
|
+
def create
|
95
|
+
endpoint operation: Post::Create
|
96
|
+
end
|
97
|
+
|
98
|
+
private
|
99
|
+
|
100
|
+
def default_cases
|
101
|
+
{
|
102
|
+
success: -> (result) { result.success? && is_it_raining? },
|
103
|
+
invalid: -> (result) { result.failure? && is_vasya_in_the_house? }
|
104
|
+
... # other cases
|
105
|
+
}
|
106
|
+
end
|
107
|
+
|
108
|
+
def is_it_raining?
|
109
|
+
WeatherForecast.for_today.raining?
|
110
|
+
end
|
111
|
+
|
112
|
+
def is_vasya_in_the_house?
|
113
|
+
User.find_by(login: 'vasya').signed_in?
|
114
|
+
end
|
115
|
+
end
|
116
|
+
```
|
117
|
+
|
118
|
+
Note that it'll override `ApplicationController#default_cases`
|
119
|
+
|
120
|
+
#### Redefining cases for specific controller action
|
121
|
+
|
122
|
+
Code below will redefine only `success` operation handling logic of `#default_cases` method, it doesn't matter where `#default_cases` was defined, at `ApplicationController` or `PostsController`
|
123
|
+
|
124
|
+
```ruby
|
125
|
+
class PostsController < ApplicationController
|
126
|
+
def create
|
127
|
+
endpoint operation: Post::Create,
|
128
|
+
different_cases: different_cases
|
129
|
+
end
|
130
|
+
|
131
|
+
private
|
132
|
+
|
133
|
+
def different_cases
|
134
|
+
{
|
135
|
+
success: -> (result) { result.success? && is_vasya_in_the_house? }
|
136
|
+
}
|
137
|
+
end
|
138
|
+
|
139
|
+
def is_vasya_in_the_house?
|
140
|
+
User.find_by(login: 'vasya').signed_in?
|
141
|
+
end
|
142
|
+
end
|
143
|
+
```
|
144
|
+
|
145
|
+
#### Redefining handler for specific controller
|
146
|
+
|
147
|
+
If you need to redefine handler logic, simply redefine `#default_handler` method
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
class PostsController < ApplicationController
|
151
|
+
def create
|
152
|
+
endpoint operation: Post::Create
|
153
|
+
end
|
154
|
+
|
155
|
+
private
|
156
|
+
|
157
|
+
def default_handler
|
158
|
+
{
|
159
|
+
success: -> (result) { head :ok }
|
160
|
+
}
|
161
|
+
end
|
162
|
+
end
|
163
|
+
```
|
164
|
+
|
165
|
+
#### Redefining handler for specific controller action
|
166
|
+
|
167
|
+
```ruby
|
168
|
+
class PostsController < ApplicationController
|
169
|
+
def create
|
170
|
+
endpoint operation: Post::Create,
|
171
|
+
different_handler: different_handler
|
172
|
+
end
|
173
|
+
|
174
|
+
private
|
175
|
+
|
176
|
+
def different_handler
|
177
|
+
{
|
178
|
+
success: -> (result) { render json: { message: 'Nice!' }, status: :created }
|
179
|
+
}
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
```
|
184
|
+
|
185
|
+
#### Defining default params for trailblazer operation
|
186
|
+
|
187
|
+
Default `#endpoint_options` method implementation
|
188
|
+
|
189
|
+
```ruby
|
190
|
+
def endpoint_options
|
191
|
+
{ params: params }
|
192
|
+
end
|
193
|
+
```
|
194
|
+
|
195
|
+
Redefining `endpoint_options`
|
196
|
+
|
197
|
+
```ruby
|
198
|
+
class PostsController < ApplicationController
|
199
|
+
|
200
|
+
private
|
201
|
+
|
202
|
+
def endpoint_options
|
203
|
+
{ params: permitted_params }
|
204
|
+
end
|
205
|
+
|
206
|
+
def permitted_params
|
207
|
+
params.permit(:some, :attributes)
|
208
|
+
end
|
209
|
+
end
|
210
|
+
```
|
211
|
+
|
212
|
+
#### Passing additional params to operation
|
213
|
+
|
214
|
+
`options` will be merged with `#endpoint_options` method result and trailblazer operation will be executed with such params: `Post::Create.(params: params, current_user: current_user)`
|
215
|
+
|
216
|
+
```ruby
|
217
|
+
class PostsController < ApplicationController
|
218
|
+
def create
|
219
|
+
endpoint operation: Post::Create,
|
220
|
+
options: { current_user: current_user }
|
221
|
+
end
|
222
|
+
end
|
223
|
+
```
|
224
|
+
|
225
|
+
#### Before handler actions
|
226
|
+
|
227
|
+
You can do some actions before `#default_handler` execution
|
228
|
+
|
229
|
+
```ruby
|
230
|
+
class PostsController < ApplicationController
|
231
|
+
def create
|
232
|
+
endpoint operation: Post::Create,
|
233
|
+
before_response: before_render_actions
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
private
|
238
|
+
|
239
|
+
def before_response_actions
|
240
|
+
{
|
241
|
+
success: -> (result) { response.headers['Some-header'] = result[:some_data] }
|
242
|
+
}
|
243
|
+
end
|
244
|
+
end
|
245
|
+
```
|
246
|
+
|
247
|
+
Code above will put data from operation result into response haeders before render
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'simple_endpoint'
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require 'irb'
|
15
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'simple_endpoint/version'
|
4
|
+
|
5
|
+
module SimpleEndpoint
|
6
|
+
module Controller
|
7
|
+
def endpoint(operation:, different_cases: {}, different_hander: {}, options: {}, before_response: {})
|
8
|
+
Endpoint.call(
|
9
|
+
operation,
|
10
|
+
default_handler.merge(different_hander),
|
11
|
+
default_cases.merge(different_cases),
|
12
|
+
before_response,
|
13
|
+
endpoint_options.merge(options)
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def endpoint_options
|
20
|
+
{ params: params }
|
21
|
+
end
|
22
|
+
|
23
|
+
def default_handler
|
24
|
+
raise NotImplementedError, HANDLER_ERROR_MESSAGE
|
25
|
+
end
|
26
|
+
|
27
|
+
def default_cases
|
28
|
+
raise NotImplementedError, CASES_ERROR_MESSAGE
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class Endpoint
|
33
|
+
def self.call(operation, handler, cases, before_response = {}, **args)
|
34
|
+
result = operation.call(**args)
|
35
|
+
new.call(result, cases, handler, before_response)
|
36
|
+
end
|
37
|
+
|
38
|
+
def call(result, cases, handler = {}, before_response = {})
|
39
|
+
matched_case = matched_case(cases, result)
|
40
|
+
procees_handler(matched_case, before_response, result) unless before_response.empty?
|
41
|
+
procees_handler(matched_case, handler, result, UnhadledResultError)
|
42
|
+
end
|
43
|
+
|
44
|
+
def matched_case(cases, result)
|
45
|
+
matched_case = obtain_matched_case(cases, result)
|
46
|
+
raise OperationIsNotHandled, OPERATION_IS_NOT_HANDLER_ERROR unless matched_case
|
47
|
+
|
48
|
+
matched_case
|
49
|
+
end
|
50
|
+
|
51
|
+
def procees_handler(matched_case, handler, result, exception_class = nil)
|
52
|
+
if handler.key?(matched_case)
|
53
|
+
handler.dig(matched_case)&.(result)
|
54
|
+
elsif exception_class
|
55
|
+
raise exception_class, "Key: #{matched_case} is not present at #{handler}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def obtain_matched_case(cases, result)
|
60
|
+
matched_case = cases.each { |kase, condition| break kase if condition.call(result) }
|
61
|
+
return if matched_case.is_a?(Hash)
|
62
|
+
|
63
|
+
matched_case
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
class OperationIsNotHandled < StandardError; end
|
68
|
+
class UnhadledResultError < StandardError; end
|
69
|
+
|
70
|
+
OPERATION_IS_NOT_HANDLER_ERROR = 'Current operation result is not handled at #default_cases method'
|
71
|
+
HANDLER_ERROR_MESSAGE = <<-LARGE_ERROR
|
72
|
+
Please implement default_handler via case statement
|
73
|
+
|
74
|
+
EXAMPLE:
|
75
|
+
###############################################
|
76
|
+
|
77
|
+
# Can be put into ApplicationController and redefined in subclasses
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def default_handler
|
82
|
+
-> (kase, result) do
|
83
|
+
case kase
|
84
|
+
when :success then render :json ...
|
85
|
+
else
|
86
|
+
# just in case you forgot to add handler for some of case
|
87
|
+
SimpleEndpoint::UnhadledResultError, 'Oh nooooo!!! Really???!!'
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
###############################################
|
93
|
+
|
94
|
+
OR
|
95
|
+
|
96
|
+
You can move this logic to separate singleton class
|
97
|
+
LARGE_ERROR
|
98
|
+
|
99
|
+
CASES_ERROR_MESSAGE = <<-LARGE_ERROR
|
100
|
+
Please implement default cases conditions via hash
|
101
|
+
|
102
|
+
EXAMPLE:
|
103
|
+
###############################################
|
104
|
+
# default trailblazer-endpoint logic, you can change it
|
105
|
+
# Can be put into ApplicationController and redefined in subclasses
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def default_cases
|
110
|
+
{
|
111
|
+
present: -> (result) { result.success? && result["present"] }
|
112
|
+
success: -> (result) { result.success? },
|
113
|
+
created: -> (result) { result.success? && result["model.action"] == :new }
|
114
|
+
invalid: -> (result) { result.failure? },
|
115
|
+
not_found: -> (result) { result.failure? && result["result.model"] && result["result.model"].failure? },
|
116
|
+
unauthenticated: -> (result) { result.failure? && result["result.policy.default"] && result["result.policy.default"].failure? }
|
117
|
+
}
|
118
|
+
end
|
119
|
+
|
120
|
+
###############################################
|
121
|
+
|
122
|
+
OR
|
123
|
+
|
124
|
+
You can move this to separate singleton class
|
125
|
+
LARGE_ERROR
|
126
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'simple_endpoint/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'simple_endpoint'
|
9
|
+
spec.version = SimpleEndpoint::VERSION
|
10
|
+
spec.authors = ['Alex Bal']
|
11
|
+
spec.email = ['differencialx@gmail.com']
|
12
|
+
|
13
|
+
spec.summary = 'Simple implementation of Trailblazer endpoint'
|
14
|
+
spec.description = 'Simple implementation of Trailblazer endpoint'
|
15
|
+
spec.homepage = ''
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
|
+
if spec.respond_to?(:metadata)
|
20
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
21
|
+
else
|
22
|
+
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
23
|
+
'public gem pushes.'
|
24
|
+
end
|
25
|
+
|
26
|
+
# Specify which files should be added to the gem when it is released.
|
27
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
28
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
29
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
30
|
+
end
|
31
|
+
spec.bindir = 'exe'
|
32
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
33
|
+
spec.require_paths = ['lib']
|
34
|
+
|
35
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
36
|
+
spec.add_development_dependency 'pry-byebug'
|
37
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
38
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
39
|
+
spec.add_development_dependency 'rubocop'
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple_endpoint
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alex Bal
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-03-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.16'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry-byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Simple implementation of Trailblazer endpoint
|
84
|
+
email:
|
85
|
+
- differencialx@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".rubocop.yml"
|
93
|
+
- ".travis.yml"
|
94
|
+
- Gemfile
|
95
|
+
- Gemfile.lock
|
96
|
+
- LICENSE
|
97
|
+
- README.md
|
98
|
+
- Rakefile
|
99
|
+
- bin/console
|
100
|
+
- bin/setup
|
101
|
+
- lib/simple_endpoint.rb
|
102
|
+
- lib/simple_endpoint/version.rb
|
103
|
+
- simple_endpoint.gemspec
|
104
|
+
homepage: ''
|
105
|
+
licenses: []
|
106
|
+
metadata:
|
107
|
+
allowed_push_host: https://rubygems.org
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options: []
|
110
|
+
require_paths:
|
111
|
+
- lib
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 2.7.7
|
125
|
+
signing_key:
|
126
|
+
specification_version: 4
|
127
|
+
summary: Simple implementation of Trailblazer endpoint
|
128
|
+
test_files: []
|