redress 0.5.0 → 1.0.1
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/README.md +13 -22
- data/lib/redress/command.rb +18 -7
- data/lib/redress/identity.rb +1 -1
- metadata +63 -92
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 717a0c11d71b56f8780dd229789d9617a181460468ad8f042a31cd23d82afb5a
|
|
4
|
+
data.tar.gz: 8bde76f620e67da59ad526abbba50ef3f88f0a2bb6e1570f355441216779dc2b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 29cea3558f0617913cdf08785cba15880da31099d1a3e361c69cd8b7e4d718a928f875a65bed79ca5f8eccdb53e66f5b28442e23e4507c22bb960c7a67cac9ea
|
|
7
|
+
data.tar.gz: c9d8ca263a9c92948b806c5ec8cbfc39e4a5d45ed6815b3c9872ef7e432b443352b5a59691daea49bb163438a5118b3411bb253524672e68ee547971dd6b765e
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](http://badge.fury.io/rb/redress)
|
|
4
4
|
[](https://codeclimate.com/github/galetahub/redress)
|
|
5
|
-
[](https://galetahub.semaphoreci.com/projects/redress)
|
|
6
6
|
[](https://coveralls.io/github/galetahub/redress?branch=master)
|
|
7
7
|
|
|
8
8
|
## Motivation (Command pattern)
|
|
@@ -29,7 +29,7 @@ The command pattern is sometimes called a service object, an operation, an actio
|
|
|
29
29
|
## Requirements
|
|
30
30
|
|
|
31
31
|
0. [Ruby 2.3](https://www.ruby-lang.org)
|
|
32
|
-
1.
|
|
32
|
+
1. dry-monads
|
|
33
33
|
2. dry-struct
|
|
34
34
|
3. hashie
|
|
35
35
|
|
|
@@ -73,7 +73,7 @@ class SimpleForm < ApplicationForm
|
|
|
73
73
|
attribute :email, Redress::Types::StrippedString
|
|
74
74
|
attribute :name_with_email, String
|
|
75
75
|
attribute :age, Redress::Types::Coercible::Integer
|
|
76
|
-
|
|
76
|
+
attribute :terms_of_service, Redress::Types::Bool
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
validates :name, presence: true
|
|
@@ -150,20 +150,7 @@ CommentForm.new(content: 'Hi').with_context(order: order)
|
|
|
150
150
|
# app/commands/application_command.rb
|
|
151
151
|
require 'redress/command'
|
|
152
152
|
|
|
153
|
-
class ApplicationCommand < Redress::
|
|
154
|
-
end
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Or if you are using ActiveRecord:
|
|
158
|
-
|
|
159
|
-
```ruby
|
|
160
|
-
# app/commands/application_command.rb
|
|
161
|
-
require 'redress/command'
|
|
162
|
-
|
|
163
|
-
class ApplicationCommand < Redress::Commad
|
|
164
|
-
def transaction(&block)
|
|
165
|
-
ActiveRecord::Base.transaction(&block) if block_given?
|
|
166
|
-
end
|
|
153
|
+
class ApplicationCommand < Redress::Command
|
|
167
154
|
end
|
|
168
155
|
```
|
|
169
156
|
|
|
@@ -178,11 +165,15 @@ module Users
|
|
|
178
165
|
end
|
|
179
166
|
|
|
180
167
|
def call
|
|
181
|
-
return
|
|
168
|
+
return Failure(@form) if @form.invalid?
|
|
182
169
|
|
|
183
|
-
user = User.
|
|
170
|
+
user = User.new(@form.attributes)
|
|
184
171
|
|
|
185
|
-
|
|
172
|
+
if user.save
|
|
173
|
+
Success(user)
|
|
174
|
+
else
|
|
175
|
+
Failure(user)
|
|
176
|
+
end
|
|
186
177
|
end
|
|
187
178
|
end
|
|
188
179
|
end
|
|
@@ -203,8 +194,8 @@ class UsersController < Account::BaseController
|
|
|
203
194
|
@user_form = SimpleForm.from_params(params)
|
|
204
195
|
|
|
205
196
|
Users::CreateCommand.call(@user_form) do |c|
|
|
206
|
-
c.
|
|
207
|
-
c.
|
|
197
|
+
c.success { head status: 201 }
|
|
198
|
+
c.failure { |form| render status: 422, json: { errors: form.errors } }
|
|
208
199
|
end
|
|
209
200
|
end
|
|
210
201
|
end
|
data/lib/redress/command.rb
CHANGED
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'dry/monads'
|
|
4
|
+
require 'dry/monads/do'
|
|
5
|
+
require 'dry/matcher/result_matcher'
|
|
4
6
|
|
|
5
7
|
module Redress
|
|
6
8
|
class Command
|
|
7
|
-
include
|
|
9
|
+
include Dry::Monads[:result]
|
|
8
10
|
|
|
9
11
|
def self.call(*args, &block)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
result = new(*args).call
|
|
13
|
+
return result unless block_given?
|
|
14
|
+
|
|
15
|
+
Dry::Matcher::ResultMatcher.call(result, &block)
|
|
12
16
|
end
|
|
13
17
|
|
|
14
|
-
def self.run(*args)
|
|
18
|
+
def self.run(*args, &block)
|
|
15
19
|
command = new(*args)
|
|
16
|
-
|
|
17
|
-
command
|
|
20
|
+
result = command.call
|
|
21
|
+
return command unless block_given?
|
|
22
|
+
|
|
23
|
+
Dry::Matcher::ResultMatcher.call(result, &block)
|
|
24
|
+
|
|
18
25
|
command
|
|
19
26
|
end
|
|
27
|
+
|
|
28
|
+
def call
|
|
29
|
+
raise NotImplementedError
|
|
30
|
+
end
|
|
20
31
|
end
|
|
21
32
|
end
|
data/lib/redress/identity.rb
CHANGED
metadata
CHANGED
|
@@ -1,226 +1,198 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: redress
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Igor Galeta
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-10-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: dry-
|
|
14
|
+
name: dry-matcher
|
|
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: dry-
|
|
28
|
+
name: dry-monads
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 1.4.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - "
|
|
38
|
+
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 1.4.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: dry-struct
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: 1.4.0
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: 1.4.0
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: dry-types
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: 1.5.0
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: actionpack
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '5.2'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '5.2'
|
|
68
|
+
version: 1.5.0
|
|
83
69
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
70
|
+
name: hashie
|
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
|
86
72
|
requirements:
|
|
87
73
|
- - ">="
|
|
88
74
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
90
|
-
type: :
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :runtime
|
|
91
77
|
prerelease: false
|
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
79
|
requirements:
|
|
94
80
|
- - ">="
|
|
95
81
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
82
|
+
version: '0'
|
|
97
83
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - "~>"
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: 0.8.21
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - "~>"
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: 0.8.21
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: guard-rspec
|
|
84
|
+
name: actionpack
|
|
113
85
|
requirement: !ruby/object:Gem::Requirement
|
|
114
86
|
requirements:
|
|
115
87
|
- - "~>"
|
|
116
88
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
89
|
+
version: '6.1'
|
|
118
90
|
type: :development
|
|
119
91
|
prerelease: false
|
|
120
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
93
|
requirements:
|
|
122
94
|
- - "~>"
|
|
123
95
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '
|
|
96
|
+
version: '6.1'
|
|
125
97
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
98
|
+
name: activemodel
|
|
127
99
|
requirement: !ruby/object:Gem::Requirement
|
|
128
100
|
requirements:
|
|
129
|
-
- - "
|
|
101
|
+
- - ">="
|
|
130
102
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
103
|
+
version: 4.2.0
|
|
132
104
|
type: :development
|
|
133
105
|
prerelease: false
|
|
134
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
107
|
requirements:
|
|
136
|
-
- - "
|
|
108
|
+
- - ">="
|
|
137
109
|
- !ruby/object:Gem::Version
|
|
138
|
-
version:
|
|
110
|
+
version: 4.2.0
|
|
139
111
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
112
|
+
name: coveralls
|
|
141
113
|
requirement: !ruby/object:Gem::Requirement
|
|
142
114
|
requirements:
|
|
143
|
-
- - "
|
|
115
|
+
- - ">="
|
|
144
116
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: '
|
|
117
|
+
version: '0'
|
|
146
118
|
type: :development
|
|
147
119
|
prerelease: false
|
|
148
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
121
|
requirements:
|
|
150
|
-
- - "
|
|
122
|
+
- - ">="
|
|
151
123
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: '
|
|
124
|
+
version: '0'
|
|
153
125
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
126
|
+
name: guard-rspec
|
|
155
127
|
requirement: !ruby/object:Gem::Requirement
|
|
156
128
|
requirements:
|
|
157
|
-
- - "
|
|
129
|
+
- - ">="
|
|
158
130
|
- !ruby/object:Gem::Version
|
|
159
|
-
version: '0
|
|
131
|
+
version: '0'
|
|
160
132
|
type: :development
|
|
161
133
|
prerelease: false
|
|
162
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
135
|
requirements:
|
|
164
|
-
- - "
|
|
136
|
+
- - ">="
|
|
165
137
|
- !ruby/object:Gem::Version
|
|
166
|
-
version: '0
|
|
138
|
+
version: '0'
|
|
167
139
|
- !ruby/object:Gem::Dependency
|
|
168
140
|
name: rake
|
|
169
141
|
requirement: !ruby/object:Gem::Requirement
|
|
170
142
|
requirements:
|
|
171
|
-
- - "
|
|
143
|
+
- - ">="
|
|
172
144
|
- !ruby/object:Gem::Version
|
|
173
|
-
version: '
|
|
145
|
+
version: '0'
|
|
174
146
|
type: :development
|
|
175
147
|
prerelease: false
|
|
176
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
177
149
|
requirements:
|
|
178
|
-
- - "
|
|
150
|
+
- - ">="
|
|
179
151
|
- !ruby/object:Gem::Version
|
|
180
|
-
version: '
|
|
152
|
+
version: '0'
|
|
181
153
|
- !ruby/object:Gem::Dependency
|
|
182
154
|
name: reek
|
|
183
155
|
requirement: !ruby/object:Gem::Requirement
|
|
184
156
|
requirements:
|
|
185
|
-
- - "
|
|
157
|
+
- - ">="
|
|
186
158
|
- !ruby/object:Gem::Version
|
|
187
|
-
version: '
|
|
159
|
+
version: '0'
|
|
188
160
|
type: :development
|
|
189
161
|
prerelease: false
|
|
190
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
191
163
|
requirements:
|
|
192
|
-
- - "
|
|
164
|
+
- - ">="
|
|
193
165
|
- !ruby/object:Gem::Version
|
|
194
|
-
version: '
|
|
166
|
+
version: '0'
|
|
195
167
|
- !ruby/object:Gem::Dependency
|
|
196
168
|
name: rspec
|
|
197
169
|
requirement: !ruby/object:Gem::Requirement
|
|
198
170
|
requirements:
|
|
199
|
-
- - "
|
|
171
|
+
- - ">="
|
|
200
172
|
- !ruby/object:Gem::Version
|
|
201
|
-
version: '
|
|
173
|
+
version: '0'
|
|
202
174
|
type: :development
|
|
203
175
|
prerelease: false
|
|
204
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
205
177
|
requirements:
|
|
206
|
-
- - "
|
|
178
|
+
- - ">="
|
|
207
179
|
- !ruby/object:Gem::Version
|
|
208
|
-
version: '
|
|
180
|
+
version: '0'
|
|
209
181
|
- !ruby/object:Gem::Dependency
|
|
210
182
|
name: rubocop
|
|
211
183
|
requirement: !ruby/object:Gem::Requirement
|
|
212
184
|
requirements:
|
|
213
|
-
- - "
|
|
185
|
+
- - ">="
|
|
214
186
|
- !ruby/object:Gem::Version
|
|
215
|
-
version: '0
|
|
187
|
+
version: '0'
|
|
216
188
|
type: :development
|
|
217
189
|
prerelease: false
|
|
218
190
|
version_requirements: !ruby/object:Gem::Requirement
|
|
219
191
|
requirements:
|
|
220
|
-
- - "
|
|
192
|
+
- - ">="
|
|
221
193
|
- !ruby/object:Gem::Version
|
|
222
|
-
version: '0
|
|
223
|
-
description:
|
|
194
|
+
version: '0'
|
|
195
|
+
description:
|
|
224
196
|
email:
|
|
225
197
|
- galeta.igor@gmail.com
|
|
226
198
|
executables: []
|
|
@@ -245,24 +217,23 @@ homepage: https://github.com/galetahub/redress
|
|
|
245
217
|
licenses:
|
|
246
218
|
- MIT
|
|
247
219
|
metadata: {}
|
|
248
|
-
post_install_message:
|
|
220
|
+
post_install_message:
|
|
249
221
|
rdoc_options: []
|
|
250
222
|
require_paths:
|
|
251
223
|
- lib
|
|
252
224
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
253
225
|
requirements:
|
|
254
|
-
- - "
|
|
226
|
+
- - ">="
|
|
255
227
|
- !ruby/object:Gem::Version
|
|
256
|
-
version:
|
|
228
|
+
version: 2.1.0
|
|
257
229
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
230
|
requirements:
|
|
259
231
|
- - ">="
|
|
260
232
|
- !ruby/object:Gem::Version
|
|
261
233
|
version: '0'
|
|
262
234
|
requirements: []
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
signing_key:
|
|
235
|
+
rubygems_version: 3.4.10
|
|
236
|
+
signing_key:
|
|
266
237
|
specification_version: 4
|
|
267
238
|
summary: Build maintainable Ruby apps
|
|
268
239
|
test_files: []
|