redress 0.5.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []