rails_use_case 0.0.4 → 0.0.9

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: d9cd28e7a8c4f8f88597a7047a12e3b342a88256798572c55fbc8f30407af566
4
- data.tar.gz: 4a2a7d0e5779aaabbf3a6a172b5f88a1cfd4faf4b6a58fab1b581c76f3d7012c
3
+ metadata.gz: 56f84c351e857b7fd1ac1963d18138f96608376c4952fe3a12e8e7db2dbc0152
4
+ data.tar.gz: 46de14ac109e227a1a36dfdbb7f75a4e0595652c3d0e59189788cbbe8ea1ccd3
5
5
  SHA512:
6
- metadata.gz: 5135d55bdab90e5d8cf0c454d90712afe87726b575e49a81d9b477b204f01f05b1b7f2366542b101fa9a62742e4403e8a7846be1d6e77289ca0038bc27b60af0
7
- data.tar.gz: c77c6b87d683be50c54e5a3c3235738e144addc3df07292954e4aca7a209ddf1bef017dfa1dc5bcb07b5bb35f2610e5d11162032aa35fa0d641717411247a58f
6
+ metadata.gz: 990f15747a27962ea59d7428416c8b525cf297e5e18f592fbaf3feeed8d4eecfe231bc7608acaa6516bc6273973ab651639a272c8b885f8b672fc4cb9b699ecf
7
+ data.tar.gz: '009f04d247c31452fec07815ff7be8c6af90ba3e5e03ef08f3ac4fd4b87cfcd4103cf44963ffc2a09f8791e8f9430327dd7db98f0d2e11d06feba3b646cbabd1'
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Rails Use Case gem
2
2
 
3
- Opinionated gem for UseCases and Services in rails to keep models and controllers slim.
3
+ Opinionated gem for UseCases and Services in Rails to keep your Models and Controllers slim.
4
+
5
+ Read more: https://dev.to/phortx/pimp-your-rails-application-32d0
4
6
 
5
7
  The purpose of a UseCase is to contain reusable high level business logic which would normally be
6
8
  located in the controller. Examples are: Place an item in the cart, create a new user or delete a comment.
@@ -20,7 +22,7 @@ gem 'rails_use_case'
20
22
 
21
23
  The purpose of a UseCase is to contain reusable high level business logic which would normally be
22
24
  located in the controller. It defines a process via `step` definitions. A UseCase takes params
23
- and has a outcome, which is successfully or failed. It doesn't have a configuration file and doesn't
25
+ and has a outcome, which is either successful or failed. It doesn't have a configuration file and doesn't
24
26
  log anything. Examples are: Place an item in the cart, create a new user or delete a comment.
25
27
 
26
28
  Steps are executed in the defined order. Only when a step succeeds (returns true) the next step will
@@ -83,6 +85,11 @@ puts result.inspect
83
85
  # }
84
86
  ```
85
87
 
88
+ - You can check whether a UseCase was successful via `result.success?`.
89
+ - You can access the value of `@record` via `result.record`.
90
+ - You can stop the UseCase process with a error message via throwing `Rails::UseCase::Error` exception.
91
+
92
+
86
93
 
87
94
  ## Behavior
88
95
 
@@ -176,8 +183,9 @@ which is available via the `config` method.
176
183
 
177
184
  ### Logging
178
185
 
179
- The service los to a separate log file `log/services/[service_name].log`. You can write additional
180
- logs via `logger.info(msg)`.
186
+ Each service automatically logs to a separate log file `log/services/[service_name].log`. You can write additional logs via `logger.info(msg)`.
187
+
188
+ It's possible to force the services to log to STDOUT by setting the environment variable `SERVICE_LOGGER_STDOUT`. This is useful for Heroku for example.
181
189
 
182
190
 
183
191
  ## License
@@ -8,8 +8,8 @@ module Rails
8
8
  extend ActiveSupport::Concern
9
9
 
10
10
  class_methods do
11
- def call(*args)
12
- new.call(*args)
11
+ def call(...)
12
+ new.call(...)
13
13
  end
14
14
 
15
15
  alias_method :perform, :call
data/lib/rails/service.rb CHANGED
@@ -50,9 +50,28 @@ module Rails
50
50
 
51
51
  # Create the log file and sets @logger
52
52
  private def setup_logger
53
- log_path = Rails.root.join('log', 'services')
54
- FileUtils.mkdir_p(log_path) unless Dir.exist?(log_path)
55
- @logger = Logger.new(Rails.root.join('log', 'services', "#{@service_name}.log").to_s)
53
+ if ENV['SERVICE_LOGGER_STDOUT']
54
+ setup_stdout_logger
55
+ else
56
+ log_path = Rails.root.join('log', 'services')
57
+ FileUtils.mkdir_p(log_path) unless Dir.exist?(log_path)
58
+
59
+ log_file = log_path.join("#{@service_name}.log").to_s
60
+
61
+ FileUtils.touch log_file
62
+ @logger = Logger.new(log_file)
63
+ end
64
+ end
65
+
66
+
67
+ # Will setup the logger for logging to STDOUT. This can be useful for
68
+ # Heroku for example.
69
+ private def setup_stdout_logger
70
+ @logger = Logger.new(STDOUT)
71
+
72
+ @logger.formatter = proc do |severity, datetime, progname, msg|
73
+ "[#{@service_name}] #{msg}"
74
+ end
56
75
  end
57
76
 
58
77
 
@@ -102,8 +121,8 @@ module Rails
102
121
 
103
122
 
104
123
  # Allows call syntax on class level: SomeService.(some, args)
105
- def self.call(*args)
106
- new.(*args)
124
+ def self.call(...)
125
+ new.(...)
107
126
  end
108
127
 
109
128
  # Allows to use rails view helpers
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_use_case
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Klein
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-05 00:00:00.000000000 Z
11
+ date: 2021-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: railties
14
+ name: activemodel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.1.0
19
+ version: 6.1.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.1.0
26
+ version: 6.1.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: activemodel
28
+ name: railties
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.1.0
33
+ version: 6.1.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: 4.1.0
40
+ version: 6.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler-audit
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: fakefs
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.2.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.13.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.13.0
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rake
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -167,7 +195,7 @@ homepage: https://github.com/phortx/rails-use-case
167
195
  licenses:
168
196
  - MIT
169
197
  metadata: {}
170
- post_install_message:
198
+ post_install_message:
171
199
  rdoc_options: []
172
200
  require_paths:
173
201
  - lib
@@ -182,8 +210,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
210
  - !ruby/object:Gem::Version
183
211
  version: '0'
184
212
  requirements: []
185
- rubygems_version: 3.0.3
186
- signing_key:
213
+ rubygems_version: 3.1.2
214
+ signing_key:
187
215
  specification_version: 4
188
216
  summary: Rails UseCase and Service classes
189
217
  test_files: []