use_case_pattern 1.0.1 → 1.0.4

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
- SHA1:
3
- metadata.gz: 0197a45aa4b6b6aa27b43d0887d884950636bcb6
4
- data.tar.gz: 5441894af403f3c87f1c63127d647528ca84e1c7
2
+ SHA256:
3
+ metadata.gz: fc01a949d6793118c4df7e91e3f93e5e2ac8720b439038a27e7da7ca28ba2449
4
+ data.tar.gz: 73cd64bf8effb9cd3b6928aa4fb94e091b30abb2845fadf1f4e46693dd4710e3
5
5
  SHA512:
6
- metadata.gz: 7646d2e26a134e69f196366eaa34440bc10bbfc3c0ddf23045156463482fcd01c34ec635671a3fd448e02960f5128524ff566105e966815dab5d988640ed6f0b
7
- data.tar.gz: 074c32d9931fb4df34311a999a50acb845aca8b89f964ae901155de40c038d74b4af1b7faea99f857621351a9eabf0a4016dada3ae3f3ccd961580fb4c5bf88a
6
+ metadata.gz: fef8c351e4569ea4f85878c9a6f7da745bbf83bfb646cd2f1f06310c60f9f38e969740a7d9f446387fe93a41e29701e12bf1d3a60c075f06bd6d8578d0f90bf7
7
+ data.tar.gz: 33206b819c01e1a69868ad6fb0b47985913b0a59e44c8f2b883aee768e13b91bd8c97935754a326ed668bd047f0bb635832c39e8aa043539824ff275896ca043
data/.travis.yml CHANGED
@@ -1,6 +1,10 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.2.5
5
- - 2.3.1
6
- before_install: gem install bundler -v 1.13.1
4
+ - 2.3
5
+ - 2.4
6
+ - 2.5
7
+ - 2.6
8
+ - 2.7
9
+ - 3
10
+ before_install: gem install bundler -v 2.1.4
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # AddressFinder 1.0.4 (Aug 8, 2022)
2
+
3
+ * Add support for Ruby 3
4
+ # AddressFinder 1.0.3 (May 27, 2020)
5
+
6
+ * Add support for Ruby 2.7
7
+ * Drop support for Ruby 2.2
8
+ * Ruby 2.7 deprecated the use of hashes in the last argument of a method call. We added a check to handle that deprecation. Read more here: https://www.ruby-lang.org/en/news/2019/12/12/separation-of-positional-and-keyword-arguments-in-ruby-3-0/
9
+
10
+ # AddressFinder 1.0.2 (November 22, 2016) #
11
+
12
+ * Raise a ValidationError when #perform! fails rather that call the Rails 5
13
+ specific #raise_validation_error method
14
+
1
15
  # AddressFinder 1.0.1 (October 12, 2016) #
2
16
 
3
17
  * Declare support for activemodel/activesupport version 4.0 or better
data/README.md CHANGED
@@ -97,7 +97,7 @@ The caller can check the success or failure of the use case by calling the `succ
97
97
 
98
98
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
99
99
 
100
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
100
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, update `CHANGELOG.md`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
101
101
 
102
102
  ## Contributing
103
103
 
@@ -9,7 +9,7 @@ module UseCasePattern
9
9
  module ClassMethods
10
10
  # The perform method of a UseCase should always return itself
11
11
  def perform(*args)
12
- new(*args).tap do |use_case|
12
+ use_case(*args).tap do |use_case|
13
13
  if use_case.valid?
14
14
  use_case.perform
15
15
  end
@@ -18,7 +18,20 @@ module UseCasePattern
18
18
 
19
19
  # Raise a validation error if perform has created any errors
20
20
  def perform!(*args)
21
- new(*args).tap { |use_case| use_case.perform! }
21
+ use_case(*args).tap { |use_case| use_case.perform! }
22
+ end
23
+
24
+ private
25
+
26
+ # initialises the use_case, making sure that any keyword arguments are
27
+ # dealt with appropriately: https://piechowski.io/post/last-arg-keyword-deprecated-ruby-2-7/
28
+ def use_case(*args)
29
+ if args.last.is_a?(Hash)
30
+ keyword_arguments = args.pop
31
+ new(*args, **keyword_arguments)
32
+ else
33
+ new(*args)
34
+ end
22
35
  end
23
36
  end
24
37
 
@@ -28,13 +41,11 @@ module UseCasePattern
28
41
  end
29
42
 
30
43
  def perform!
31
- if valid?
32
- perform
44
+ if invalid?
45
+ raise(ValidationError.new(self))
33
46
  end
34
47
 
35
- if failure?
36
- raise_validation_error
37
- end
48
+ perform
38
49
  end
39
50
 
40
51
  # Did the use case performed its task without errors?
@@ -47,4 +58,24 @@ module UseCasePattern
47
58
  errors.any?
48
59
  end
49
60
  end
61
+
62
+ # Use Case Pattern ValidationError
63
+ #
64
+ # Raised by <tt>perform!</tt> when validations result in errors.
65
+ #
66
+ # Check the use case +errors+ object for attribute error messages.
67
+ #
68
+ # ActiveModel 5.0 has an ActiveModel::ValidationError class, prior versions including 4.2 do not.
69
+ #
70
+ # This class may be deprecated by ActiveModel::ValidationError in the future.
71
+ #
72
+ class ValidationError < StandardError
73
+ attr_reader :model
74
+
75
+ def initialize(model)
76
+ @model = model
77
+ errors = @model.errors.full_messages.join(", ")
78
+ super("Validation failed: " + errors)
79
+ end
80
+ end
50
81
  end
@@ -1,3 +1,3 @@
1
1
  module UseCasePattern
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.4"
3
3
  end
@@ -20,12 +20,12 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.required_ruby_version = '~> 2.2'
23
+ spec.required_ruby_version = '>= 2.3'
24
24
 
25
25
  spec.add_runtime_dependency "activemodel", [">= 4.0.0"]
26
26
  spec.add_runtime_dependency "activesupport", [">= 4.0.0"]
27
27
 
28
- spec.add_development_dependency "bundler", "~> 1.13"
28
+ spec.add_development_dependency "bundler", ">= 2.1.4"
29
29
  spec.add_development_dependency "rake", "~> 10.0"
30
30
  spec.add_development_dependency "rspec", "~> 3.0"
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: use_case_pattern
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nigel Ramsay
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-12 00:00:00.000000000 Z
11
+ date: 2022-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.13'
47
+ version: 2.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.13'
54
+ version: 2.1.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -106,24 +106,23 @@ files:
106
106
  homepage: https://github.com/abletech/use_case_pattern
107
107
  licenses: []
108
108
  metadata: {}
109
- post_install_message:
109
+ post_install_message:
110
110
  rdoc_options: []
111
111
  require_paths:
112
112
  - lib
113
113
  required_ruby_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '2.2'
117
+ version: '2.3'
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  requirements: []
124
- rubyforge_project:
125
- rubygems_version: 2.5.1
126
- signing_key:
124
+ rubygems_version: 3.2.3
125
+ signing_key:
127
126
  specification_version: 4
128
127
  summary: A module that helps you to implement the Use Case design pattern
129
128
  test_files: []