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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dcc21824a6395eda1bf8c8c9dab35e5ff6e87e458d3d696ec5ebf59a03c26217
4
- data.tar.gz: 12969e57fc763d657da28fb4f74cc923e7932282a034741f944dc3f6664b252c
3
+ metadata.gz: 717a0c11d71b56f8780dd229789d9617a181460468ad8f042a31cd23d82afb5a
4
+ data.tar.gz: 8bde76f620e67da59ad526abbba50ef3f88f0a2bb6e1570f355441216779dc2b
5
5
  SHA512:
6
- metadata.gz: cc0980ae192ae4bffe7ca1f96f2a7eea931a9120d72d3a94a90d4578f1cbfa234fb45661705bc79fa312c0724b8a61c8501a2a4fb2180cce1947337654701195
7
- data.tar.gz: 026f35ad1df1922b4bb2ca06da41c0a2d158be430e85c3fda2b9eeab0231e17a82a9bd51c55a914c9a7541221797590cea696581262d0a91f86fac9af8488441
6
+ metadata.gz: 29cea3558f0617913cdf08785cba15880da31099d1a3e361c69cd8b7e4d718a928f875a65bed79ca5f8eccdb53e66f5b28442e23e4507c22bb960c7a67cac9ea
7
+ data.tar.gz: c9d8ca263a9c92948b806c5ec8cbfc39e4a5d45ed6815b3c9872ef7e432b443352b5a59691daea49bb163438a5118b3411bb253524672e68ee547971dd6b765e
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/redress.svg)](http://badge.fury.io/rb/redress)
4
4
  [![Code Climate](https://codeclimate.com/github/galetahub/redress/badges/gpa.svg)](https://codeclimate.com/github/galetahub/redress)
5
- [![Build Status](https://semaphoreci.com/api/v1/igor-galeta/redress/branches/master/shields_badge.svg)](https://semaphoreci.com/igor-galeta/redress)
5
+ [![Build Status](https://galetahub.semaphoreci.com/badges/redress/branches/master.svg?style=shields&key=1c60c225-c1b2-4889-9887-18aacf2e6184)](https://galetahub.semaphoreci.com/projects/redress)
6
6
  [![Coverage Status](https://coveralls.io/repos/github/galetahub/redress/badge.svg?branch=master)](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. wisper
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
- atttibute :terms_of_service, Redress::Types::Bool
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::Commad
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 broadcast(:invalid, @form) if @form.invalid?
168
+ return Failure(@form) if @form.invalid?
182
169
 
183
- user = User.create(@form.attributes)
170
+ user = User.new(@form.attributes)
184
171
 
185
- broadcast(:ok, user)
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.on(:ok) { head status: 201 }
207
- c.on(:invalid) { |form| render status: 422, json: { errors: form.errors } }
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
@@ -1,21 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'wisper'
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 Wisper::Publisher
9
+ include Dry::Monads[:result]
8
10
 
9
11
  def self.call(*args, &block)
10
- run(*args, &block)
11
- nil
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
- yield command if block_given?
17
- command.call
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
@@ -12,7 +12,7 @@ module Redress
12
12
  end
13
13
 
14
14
  def self.version
15
- '0.5.0'
15
+ '1.0.1'
16
16
  end
17
17
 
18
18
  def self.version_label
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.5.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: 2021-02-05 00:00:00.000000000 Z
11
+ date: 2023-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: dry-struct
14
+ name: dry-matcher
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
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: '1.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dry-types
28
+ name: dry-monads
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.1'
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: '1.1'
40
+ version: 1.4.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: hashie
42
+ name: dry-struct
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 3.5.7
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: 3.5.7
54
+ version: 1.4.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: wisper
56
+ name: dry-types
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 2.0.0
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: 2.0.0
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: activemodel
70
+ name: hashie
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - ">="
88
74
  - !ruby/object:Gem::Version
89
- version: 4.2.0
90
- type: :development
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: 4.2.0
82
+ version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
- name: coveralls
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: '4.7'
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: '4.7'
96
+ version: '6.1'
125
97
  - !ruby/object:Gem::Dependency
126
- name: pry
98
+ name: activemodel
127
99
  requirement: !ruby/object:Gem::Requirement
128
100
  requirements:
129
- - - "~>"
101
+ - - ">="
130
102
  - !ruby/object:Gem::Version
131
- version: '0.10'
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: '0.10'
110
+ version: 4.2.0
139
111
  - !ruby/object:Gem::Dependency
140
- name: pry-byebug
112
+ name: coveralls
141
113
  requirement: !ruby/object:Gem::Requirement
142
114
  requirements:
143
- - - "~>"
115
+ - - ">="
144
116
  - !ruby/object:Gem::Version
145
- version: '3.4'
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: '3.4'
124
+ version: '0'
153
125
  - !ruby/object:Gem::Dependency
154
- name: pry-state
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.1'
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.1'
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: '12.0'
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: '12.0'
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: '4.7'
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: '4.7'
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: '3.6'
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: '3.6'
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.49'
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.49'
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: '2.5'
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
- rubyforge_project:
264
- rubygems_version: 2.7.6
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: []