performify 0.9.1 → 1.0.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 +4 -4
- data/.github/workflows/test.yml +25 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +11 -0
- data/README.md +0 -26
- data/lib/performify.rb +2 -0
- data/lib/performify/base.rb +11 -5
- data/lib/performify/validation.rb +4 -9
- data/lib/performify/version.rb +1 -1
- data/performify.gemspec +6 -5
- metadata +38 -23
- data/.travis.yml +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d13a5e97cc5534c7f85d91d1b3e65ec55830f2006bfda7ac57940c6ad7e30c9d
|
4
|
+
data.tar.gz: 34cd73abe679e97577581f43357c3e1727aaad45671bf6a778cddda32f7c9559
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2e9e69d59d859c2951fa56a1d235c70fcbc35b254872ee56f5354982f3a7b277458c276e3c4f5d440e81faec855b61146aa8dbf2c9ce4713cd6951b28c62f1d
|
7
|
+
data.tar.gz: 076cb868c4d988383084001ff445e80677012dc7f2a28c2b82366576252fd4b5125b3e5d13e682a794771a0b70e66cef294b9952d94804a207a82a649264ea6e
|
@@ -0,0 +1,25 @@
|
|
1
|
+
name: Test
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches:
|
5
|
+
- master
|
6
|
+
|
7
|
+
pull_request:
|
8
|
+
branches:
|
9
|
+
- master
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
test:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
|
17
|
+
- uses: ruby/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: 2.7.2
|
20
|
+
bundler-cache: true
|
21
|
+
|
22
|
+
- name: Test
|
23
|
+
run: |
|
24
|
+
bundle exec rspec --format progress
|
25
|
+
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.0
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# CHANGELOG
|
2
|
+
|
3
|
+
## 1.0.0
|
4
|
+
|
5
|
+
This version is switching performify from version `0.12.0` of `dry-validation` to `dry-schema` of version `1.4` which means breaking changes:
|
6
|
+
|
7
|
+
- Because additional options are not supported by `dry-schema` (or at least I have not found this support in the source code) we were forced to drop them as well. So, from now you can't use `current_user` in your schemas by default because it's not being passed implicitly.
|
8
|
+
|
9
|
+
## 1.0.1
|
10
|
+
|
11
|
+
This version has all dependencies updated to latest version. We also switched automated testing from Circle CI (which was failing) to Github Action.
|
data/README.md
CHANGED
@@ -242,32 +242,6 @@ else
|
|
242
242
|
end
|
243
243
|
```
|
244
244
|
|
245
|
-
You can set options for `#with` to schema by overriding `#with_options`.
|
246
|
-
By default `#with_options` contains `{ current_user: current_user }`.
|
247
|
-
|
248
|
-
```ruby
|
249
|
-
module Users
|
250
|
-
class UpdatePassword < ApplicationService
|
251
|
-
schema do
|
252
|
-
configure do
|
253
|
-
option :current_user
|
254
|
-
|
255
|
-
def valid_password?(value)
|
256
|
-
current_user.password_digest.blank? || current_user.authenticate(value)
|
257
|
-
end
|
258
|
-
end
|
259
|
-
|
260
|
-
optional(:old_password).filled(:str?, :valid_password?)
|
261
|
-
required(:new_password).filled(:str?)
|
262
|
-
end
|
263
|
-
|
264
|
-
def execute!
|
265
|
-
super { current_user.update(password: new_password) }
|
266
|
-
end
|
267
|
-
end
|
268
|
-
end
|
269
|
-
```
|
270
|
-
|
271
245
|
You can get filtered inputs after success validation by accessing `inputs`.
|
272
246
|
|
273
247
|
```ruby
|
data/lib/performify.rb
CHANGED
data/lib/performify/base.rb
CHANGED
@@ -26,10 +26,13 @@ module Performify
|
|
26
26
|
ActiveRecord::Base.transaction do
|
27
27
|
begin
|
28
28
|
block_result = yield
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
|
30
|
+
if @result.nil?
|
31
|
+
if block_result
|
32
|
+
success!(with_callbacks: false)
|
33
|
+
else
|
34
|
+
fail!(with_callbacks: false)
|
35
|
+
end
|
33
36
|
end
|
34
37
|
rescue RuntimeError, ActiveRecord::RecordInvalid => e
|
35
38
|
fail!(exception: e, with_callbacks: false)
|
@@ -86,7 +89,10 @@ module Performify
|
|
86
89
|
private def define_singleton_methods
|
87
90
|
param_names = schema ? schema.rules.keys : args.keys
|
88
91
|
param_names.each do |param_name|
|
89
|
-
define_singleton_method(param_name)
|
92
|
+
define_singleton_method(param_name) do
|
93
|
+
value = args[param_name]
|
94
|
+
value.is_a?(Hash) ? JSON.parse(value.to_json, object_class: OpenStruct) : value
|
95
|
+
end
|
90
96
|
end
|
91
97
|
end
|
92
98
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'dry-validation'
|
2
|
-
|
3
1
|
module Performify
|
4
2
|
module Validation
|
5
3
|
def self.extended(base)
|
@@ -10,8 +8,8 @@ module Performify
|
|
10
8
|
module ClassMethods
|
11
9
|
def schema(outer_schema = nil, &block)
|
12
10
|
if block_given?
|
13
|
-
@schema = Dry::
|
14
|
-
elsif outer_schema.present? && outer_schema.is_a?(Dry::
|
11
|
+
@schema = Dry::Schema.Params(**{}, &block)
|
12
|
+
elsif outer_schema.present? && outer_schema.is_a?(Dry::Schema::Params)
|
15
13
|
@schema = outer_schema
|
16
14
|
else
|
17
15
|
@schema
|
@@ -27,7 +25,8 @@ module Performify
|
|
27
25
|
def validate
|
28
26
|
return args if schema.nil?
|
29
27
|
|
30
|
-
result = schema.
|
28
|
+
result = schema.call(args)
|
29
|
+
|
31
30
|
if result.success?
|
32
31
|
@inputs = result.output
|
33
32
|
else
|
@@ -51,10 +50,6 @@ module Performify
|
|
51
50
|
def errors?
|
52
51
|
errors.any?
|
53
52
|
end
|
54
|
-
|
55
|
-
private def with_options
|
56
|
-
{ current_user: current_user }
|
57
|
-
end
|
58
53
|
end
|
59
54
|
end
|
60
55
|
end
|
data/lib/performify/version.rb
CHANGED
data/performify.gemspec
CHANGED
@@ -23,13 +23,14 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ["lib"]
|
25
25
|
|
26
|
-
spec.add_dependency "activerecord", ">= 4.0
|
27
|
-
spec.add_dependency "dry-
|
26
|
+
spec.add_dependency "activerecord", ">= 4.0"
|
27
|
+
spec.add_dependency "dry-schema", "~> 1.5"
|
28
28
|
|
29
|
-
spec.add_development_dependency "sqlite3", "~> 1.
|
30
|
-
spec.add_development_dependency "bundler", "
|
31
|
-
spec.add_development_dependency "rake", "~>
|
29
|
+
spec.add_development_dependency "sqlite3", "~> 1.4"
|
30
|
+
spec.add_development_dependency "bundler", ">= 2.2"
|
31
|
+
spec.add_development_dependency "rake", "~> 12.3.3"
|
32
32
|
spec.add_development_dependency "rspec", "~> 3.5"
|
33
33
|
spec.add_development_dependency "rubocop", "~> 0.48"
|
34
34
|
spec.add_development_dependency "byebug", "~> 9.0.6"
|
35
|
+
spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
|
35
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: performify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Tsvetkov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,70 +16,70 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.0
|
19
|
+
version: '4.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: 4.0
|
26
|
+
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: dry-
|
28
|
+
name: dry-schema
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '1.5'
|
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.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: '1.4'
|
48
48
|
type: :development
|
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: 1.
|
54
|
+
version: '1.4'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '2.2'
|
62
62
|
type: :development
|
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: '
|
68
|
+
version: '2.2'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 12.3.3
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 12.3.3
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 9.0.6
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec_junit_formatter
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.4.1
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.4.1
|
125
139
|
description: Performify helps you to define your app logic in separated and isolated service
|
126
140
|
classes that is easy to use, test and maitain.
|
127
141
|
email:
|
@@ -130,10 +144,12 @@ executables: []
|
|
130
144
|
extensions: []
|
131
145
|
extra_rdoc_files: []
|
132
146
|
files:
|
147
|
+
- ".github/workflows/test.yml"
|
133
148
|
- ".gitignore"
|
134
149
|
- ".rspec"
|
135
150
|
- ".rubocop.yml"
|
136
|
-
- ".
|
151
|
+
- ".ruby-version"
|
152
|
+
- CHANGELOG.md
|
137
153
|
- Gemfile
|
138
154
|
- LICENSE.txt
|
139
155
|
- README.md
|
@@ -153,7 +169,7 @@ homepage: https://github.com/kimrgrey/performify
|
|
153
169
|
licenses:
|
154
170
|
- MIT
|
155
171
|
metadata: {}
|
156
|
-
post_install_message:
|
172
|
+
post_install_message:
|
157
173
|
rdoc_options: []
|
158
174
|
require_paths:
|
159
175
|
- lib
|
@@ -168,9 +184,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
184
|
- !ruby/object:Gem::Version
|
169
185
|
version: '0'
|
170
186
|
requirements: []
|
171
|
-
|
172
|
-
|
173
|
-
signing_key:
|
187
|
+
rubygems_version: 3.1.2
|
188
|
+
signing_key:
|
174
189
|
specification_version: 4
|
175
190
|
summary: Service classes that makes your life easier
|
176
191
|
test_files: []
|