performify 0.9.1 → 1.0.2

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: 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