rails_use_case 0.0.4 → 0.0.9

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