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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 33e27c0ba8a5b203682345fc20496321bdf8f896afe07b6a5560cc8eebabb446
4
- data.tar.gz: 984702d047e7381be2672235b2ea35f88c88df605b6bffd590524b398da19ea1
3
+ metadata.gz: d13a5e97cc5534c7f85d91d1b3e65ec55830f2006bfda7ac57940c6ad7e30c9d
4
+ data.tar.gz: 34cd73abe679e97577581f43357c3e1727aaad45671bf6a778cddda32f7c9559
5
5
  SHA512:
6
- metadata.gz: 055f189d9d9c6ef5dd974bc549f5c3254e58626171694ed9f2cfbf50f407c26c643d06d8ddd2fe1b0fe406df1a55be5ff3a657f7b43e66a8db0b1069f9c1c706
7
- data.tar.gz: 5ee348d53bc632721f59aba5cc4d50339bb17dce38f858672bd60b2735447d2bcc7ef0def6a76f54719e5558fea5a0c2f9fe022c93b80d16a39a2a871e628955
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
+
@@ -0,0 +1 @@
1
+ 2.7.0
@@ -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
@@ -1,3 +1,5 @@
1
+ require "dry/schema"
2
+
1
3
  require "performify/version"
2
4
  require "performify/base"
3
5
 
@@ -26,10 +26,13 @@ module Performify
26
26
  ActiveRecord::Base.transaction do
27
27
  begin
28
28
  block_result = yield
29
- if block_result
30
- success!(with_callbacks: false)
31
- else
32
- fail!(with_callbacks: false)
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) { args[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::Validation.Schema(Dry::Validation::Schema::Params, {}, &block)
14
- elsif outer_schema.present? && outer_schema.is_a?(Dry::Validation::Schema)
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.with(with_options).call(args)
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
@@ -1,3 +1,3 @@
1
1
  module Performify
2
- VERSION = '0.9.1'.freeze
2
+ VERSION = '1.0.2'.freeze
3
3
  end
@@ -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.0"
27
- spec.add_dependency "dry-validation", ">= 0.12.0"
26
+ spec.add_dependency "activerecord", ">= 4.0"
27
+ spec.add_dependency "dry-schema", "~> 1.5"
28
28
 
29
- spec.add_development_dependency "sqlite3", "~> 1.3.13"
30
- spec.add_development_dependency "bundler", "~> 1.14"
31
- spec.add_development_dependency "rake", "~> 10.0"
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.9.1
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: 2018-09-24 00:00:00.000000000 Z
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.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.0
26
+ version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dry-validation
28
+ name: dry-schema
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.12.0
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: 0.12.0
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.3.13
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.3.13
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: '1.14'
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: '1.14'
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: '10.0'
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: '10.0'
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
- - ".travis.yml"
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
- rubyforge_project:
172
- rubygems_version: 2.7.6
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: []
@@ -1,10 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.3.1
5
- before_install:
6
- - gem install bundler -v 1.14.6
7
- install:
8
- - bin/setup
9
- before_script:
10
- - bin/rubocop