granite 0.17.6 → 1.0.0

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: 35b8537cf811f9171c8a4abd64e49bb08e620606eedf9305f4f8f24fc72f7417
4
- data.tar.gz: 910712a1c07681a1704eb74a0e433a89e1a64adf1d64ce4f1ff495880ae48b5b
3
+ metadata.gz: b350a3ec5e67ddb8963e53fd5662b907281bd99ae80bf2c56d1e38bc5aab1e91
4
+ data.tar.gz: e50e8205ed1c15b743c19162a707aaeb9e22aa56956b7cfc468c9c2ddaba9211
5
5
  SHA512:
6
- metadata.gz: 1dd4c51654f375296b2b8fc388be9c18fc16339d04a3fa86d99ad854028d4ec7ebd681e1522e17d654119f5cb12099ff4dea9ac6af467d2ae673b5cf51352874
7
- data.tar.gz: fa1bde48cbb506e2daf386486405672f2af05123c9e1ca175a960b1fabd1012899950ae43d4bc87ed30b392d47bffec832737c1e8161ca9f1da430234fc03f9e
6
+ metadata.gz: e0bd294852f36a6e3995cc8bd2637093be985032d32645350f04fdad67c6897dafde07770ec53f720af43bb7b6470fe59643a3ba4784d97a829e35c8bc609fc7
7
+ data.tar.gz: 15c8c6b16d6514fd6b3699e99615e06b1f2ee523cd978bb3725891c969a991f81e72fba821d5e52064a4afe48c4875fd4aa4c77a5e499eb03f69b103a678b874
@@ -3,6 +3,7 @@ require 'action_controller'
3
3
  module Granite
4
4
  class Controller < Granite.base_controller_class # :nodoc:
5
5
  include Controller::Translations
6
+
6
7
  helper Controller::Translations
7
8
 
8
9
  singleton_class.__send__(:attr_accessor, :projector_class)
@@ -9,6 +9,7 @@ module Granite
9
9
 
10
10
  included do
11
11
  include ContextProxy
12
+
12
13
  attr_reader :ctx
13
14
  end
14
15
 
@@ -5,15 +5,15 @@ module Granite
5
5
  module Preconditions
6
6
  # Checks related business actions for precondition errors and adds them to current action.
7
7
  #
8
- # memoize def child_action
8
+ # memo_wise def child_action
9
9
  # ...
10
10
  # end
11
11
  # precondition embedded: :child_action
12
12
  #
13
- # memoize def child_action
13
+ # memo_wise def child_action
14
14
  # ...
15
15
  # end
16
- # memoize def child_actions
16
+ # memo_wise def child_actions
17
17
  # ...
18
18
  # end
19
19
  # precondition embedded: [:child_action, :child_actions]
@@ -106,7 +106,7 @@ module Granite
106
106
 
107
107
  private
108
108
 
109
- def run_preconditions!(cache_result: false)
109
+ def run_preconditions!(cache_result: false) # rubocop:disable Naming/PredicateMethod
110
110
  _preconditions.execute!(self) if @preconditions_run.nil?
111
111
  @preconditions_run = true if cache_result
112
112
  errors.empty?
@@ -6,6 +6,9 @@ module Granite
6
6
  end
7
7
 
8
8
  module TransactionManager # :nodoc:
9
+ TRANSACTIONS_STACK_KEY = :granite_transaction_manager_transactions_stack
10
+ private_constant :TRANSACTIONS_STACK_KEY
11
+
9
12
  class << self
10
13
  # Runs a block in a transaction
11
14
  # It will open a new transaction or append a block to the current one if it exists
@@ -30,8 +33,6 @@ module Granite
30
33
 
31
34
  private
32
35
 
33
- TRANSACTIONS_STACK_KEY = :granite_transaction_manager_transactions_stack
34
-
35
36
  def transactions_stack
36
37
  Thread.current[TRANSACTIONS_STACK_KEY] ||= TransactionsStack.new
37
38
  end
@@ -12,10 +12,10 @@ module Granite
12
12
  "<#{@klass}ContextProxy #{@context}>"
13
13
  end
14
14
 
15
- ruby2_keywords def method_missing(method, *args, &block)
15
+ def method_missing(method, *args, **kwargs, &block)
16
16
  if @klass.respond_to?(method)
17
17
  @klass.with_context(@context) do
18
- @klass.public_send(method, *args, &block)
18
+ @klass.public_send(method, *args, **kwargs, &block)
19
19
  end
20
20
  else
21
21
  super
@@ -1,13 +1,13 @@
1
- require 'memoist'
1
+ require 'memo_wise'
2
2
  require 'action_controller/metal/exceptions'
3
3
 
4
4
  module Granite
5
5
  class Dispatcher # :nodoc:
6
- extend Memoist
6
+ prepend MemoWise
7
7
 
8
- # Make dispatcher object pristine, clean memoist cache.
8
+ # Make dispatcher object pristine, clean memo_wise cache.
9
9
  def reset!
10
- unmemoize_all
10
+ reset_memo_wise
11
11
  end
12
12
 
13
13
  def call(*)
@@ -45,23 +45,23 @@ module Granite
45
45
  ]
46
46
  end
47
47
 
48
- memoize def action_name(request_method_symbol, granite_action, granite_projector, projector_action)
48
+ memo_wise def action_name(request_method_symbol, granite_action, granite_projector, projector_action)
49
49
  projector = projector(granite_action, granite_projector)
50
50
  return unless projector
51
51
 
52
52
  projector.action_for(request_method_symbol, projector_action.to_s)
53
53
  end
54
54
 
55
- memoize def projector(granite_action, granite_projector)
55
+ memo_wise def projector(granite_action, granite_projector)
56
56
  action = business_action(granite_action)
57
57
 
58
58
  action.public_send(granite_projector) if action.respond_to?(granite_projector)
59
59
  end
60
60
 
61
- memoize def business_action(granite_action)
61
+ memo_wise def business_action(granite_action)
62
62
  granite_action.camelize.safe_constantize ||
63
- raise(ActionController::RoutingError,
64
- "Granite action '#{granite_action}' is mounted but class '#{granite_action.camelize}' can't be found")
63
+ raise(ActionController::RoutingError,
64
+ "Granite action '#{granite_action}' is mounted but class '#{granite_action.camelize}' can't be found")
65
65
  end
66
66
  end
67
67
  end
@@ -12,9 +12,7 @@ Do you have #{projector.action_name}##{projector.projector_name} declared in rou
12
12
  module Helpers # :nodoc:
13
13
  extend ActiveSupport::Concern
14
14
 
15
- def view_context
16
- Granite.view_context
17
- end
15
+ delegate :view_context, to: :Granite
18
16
  alias h view_context
19
17
 
20
18
  def action_url(action, **options)
@@ -35,7 +33,7 @@ Do you have #{projector.action_name}##{projector.projector_name} declared in rou
35
33
 
36
34
  def required_params
37
35
  corresponding_route.required_parts
38
- .to_h { |name| [name, action.public_send(name)] }
36
+ .index_with { |name| action.public_send(name) }
39
37
  end
40
38
 
41
39
  def corresponding_route
@@ -68,7 +68,7 @@ RSpec::Matchers.define :perform_action do |klass| # rubocop:disable Metrics/Bloc
68
68
  end
69
69
 
70
70
  def actual_attributes(action)
71
- @attributes.keys.to_h { |attr| [attr, action.public_send(attr)] }
71
+ @attributes.keys.index_with { |attr| action.public_send(attr) }
72
72
  end
73
73
 
74
74
  def action_matches?(action)
@@ -4,7 +4,7 @@ module Granite
4
4
  include RSpec::Rails::ControllerExampleGroup
5
5
 
6
6
  included do
7
- before { Granite::Routing::Declarer.dispatcher.unmemoize_all }
7
+ before { Granite::Routing::Declarer.dispatcher.reset_memo_wise }
8
8
  end
9
9
 
10
10
  module ClassMethods # :nodoc:
@@ -93,7 +93,7 @@ RSpec::Matchers.define :satisfy_preconditions do # rubocop:disable Metrics/Block
93
93
  message + " but got following kind of error messages:\n #{actual_kind_of_errors.inspect}"
94
94
  end
95
95
 
96
- def compare(actual, expected)
96
+ def compare(actual, expected) # rubocop:disable Naming/PredicateMethod
97
97
  if RSpec::Matchers.is_a_matcher?(expected)
98
98
  expected.matches?(actual)
99
99
  elsif expected.is_a?(String)
@@ -1,3 +1,3 @@
1
1
  module Granite
2
- VERSION = '0.17.6'.freeze
2
+ VERSION = '1.0.0'.freeze
3
3
  end
data/lib/granite.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'active_support/dependencies'
2
2
  require 'action_controller'
3
- require 'ruby2_keywords'
4
3
 
5
4
  require 'granite/version'
6
5
  require 'granite/config'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: granite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.6
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toptal Engineering
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2026-01-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: actionpack
@@ -16,90 +15,50 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '6.0'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '8.1'
18
+ version: '7.2'
23
19
  type: :runtime
24
20
  prerelease: false
25
21
  version_requirements: !ruby/object:Gem::Requirement
26
22
  requirements:
27
23
  - - ">="
28
24
  - !ruby/object:Gem::Version
29
- version: '6.0'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '8.1'
25
+ version: '7.2'
33
26
  - !ruby/object:Gem::Dependency
34
27
  name: activesupport
35
28
  requirement: !ruby/object:Gem::Requirement
36
29
  requirements:
37
30
  - - ">="
38
31
  - !ruby/object:Gem::Version
39
- version: '6.0'
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '8.1'
32
+ version: '7.2'
43
33
  type: :runtime
44
34
  prerelease: false
45
35
  version_requirements: !ruby/object:Gem::Requirement
46
36
  requirements:
47
37
  - - ">="
48
38
  - !ruby/object:Gem::Version
49
- version: '6.0'
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '8.1'
39
+ version: '7.2'
53
40
  - !ruby/object:Gem::Dependency
54
41
  name: granite-form
55
42
  requirement: !ruby/object:Gem::Requirement
56
43
  requirements:
57
44
  - - ">="
58
45
  - !ruby/object:Gem::Version
59
- version: 0.3.0
46
+ version: '0'
60
47
  type: :runtime
61
48
  prerelease: false
62
49
  version_requirements: !ruby/object:Gem::Requirement
63
50
  requirements:
64
51
  - - ">="
65
52
  - !ruby/object:Gem::Version
66
- version: 0.3.0
67
- - !ruby/object:Gem::Dependency
68
- name: memoist
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '0.16'
74
- type: :runtime
75
- prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: '0.16'
81
- - !ruby/object:Gem::Dependency
82
- name: ruby2_keywords
83
- requirement: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: 0.0.5
88
- type: :runtime
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: 0.0.5
53
+ version: '0'
95
54
  - !ruby/object:Gem::Dependency
96
- name: activerecord
55
+ name: memo_wise
97
56
  requirement: !ruby/object:Gem::Requirement
98
57
  requirements:
99
58
  - - ">="
100
59
  - !ruby/object:Gem::Version
101
60
  version: '0'
102
- type: :development
61
+ type: :runtime
103
62
  prerelease: false
104
63
  version_requirements: !ruby/object:Gem::Requirement
105
64
  requirements:
@@ -107,7 +66,7 @@ dependencies:
107
66
  - !ruby/object:Gem::Version
108
67
  version: '0'
109
68
  - !ruby/object:Gem::Dependency
110
- name: appraisal
69
+ name: activerecord
111
70
  requirement: !ruby/object:Gem::Requirement
112
71
  requirements:
113
72
  - - ">="
@@ -138,30 +97,30 @@ dependencies:
138
97
  name: fuubar
139
98
  requirement: !ruby/object:Gem::Requirement
140
99
  requirements:
141
- - - "~>"
100
+ - - ">="
142
101
  - !ruby/object:Gem::Version
143
- version: '2.0'
102
+ version: '0'
144
103
  type: :development
145
104
  prerelease: false
146
105
  version_requirements: !ruby/object:Gem::Requirement
147
106
  requirements:
148
- - - "~>"
107
+ - - ">="
149
108
  - !ruby/object:Gem::Version
150
- version: '2.0'
109
+ version: '0'
151
110
  - !ruby/object:Gem::Dependency
152
111
  name: pg
153
112
  requirement: !ruby/object:Gem::Requirement
154
113
  requirements:
155
- - - "<"
114
+ - - ">="
156
115
  - !ruby/object:Gem::Version
157
- version: '2'
116
+ version: '0'
158
117
  type: :development
159
118
  prerelease: false
160
119
  version_requirements: !ruby/object:Gem::Requirement
161
120
  requirements:
162
- - - "<"
121
+ - - ">="
163
122
  - !ruby/object:Gem::Version
164
- version: '2'
123
+ version: '0'
165
124
  - !ruby/object:Gem::Dependency
166
125
  name: pry-byebug
167
126
  requirement: !ruby/object:Gem::Requirement
@@ -180,158 +139,156 @@ dependencies:
180
139
  name: rspec
181
140
  requirement: !ruby/object:Gem::Requirement
182
141
  requirements:
183
- - - "~>"
142
+ - - ">="
184
143
  - !ruby/object:Gem::Version
185
- version: '3.12'
144
+ version: '0'
186
145
  type: :development
187
146
  prerelease: false
188
147
  version_requirements: !ruby/object:Gem::Requirement
189
148
  requirements:
190
- - - "~>"
149
+ - - ">="
191
150
  - !ruby/object:Gem::Version
192
- version: '3.12'
151
+ version: '0'
193
152
  - !ruby/object:Gem::Dependency
194
153
  name: rspec-activemodel-mocks
195
154
  requirement: !ruby/object:Gem::Requirement
196
155
  requirements:
197
- - - "~>"
156
+ - - ">="
198
157
  - !ruby/object:Gem::Version
199
- version: '1.0'
158
+ version: '0'
200
159
  type: :development
201
160
  prerelease: false
202
161
  version_requirements: !ruby/object:Gem::Requirement
203
162
  requirements:
204
- - - "~>"
163
+ - - ">="
205
164
  - !ruby/object:Gem::Version
206
- version: '1.0'
165
+ version: '0'
207
166
  - !ruby/object:Gem::Dependency
208
167
  name: rspec-collection_matchers
209
168
  requirement: !ruby/object:Gem::Requirement
210
169
  requirements:
211
- - - "~>"
170
+ - - ">="
212
171
  - !ruby/object:Gem::Version
213
- version: '1.1'
172
+ version: '0'
214
173
  type: :development
215
174
  prerelease: false
216
175
  version_requirements: !ruby/object:Gem::Requirement
217
176
  requirements:
218
- - - "~>"
177
+ - - ">="
219
178
  - !ruby/object:Gem::Version
220
- version: '1.1'
179
+ version: '0'
221
180
  - !ruby/object:Gem::Dependency
222
181
  name: rspec-its
223
182
  requirement: !ruby/object:Gem::Requirement
224
183
  requirements:
225
- - - "~>"
184
+ - - ">="
226
185
  - !ruby/object:Gem::Version
227
- version: '1.2'
186
+ version: '0'
228
187
  type: :development
229
188
  prerelease: false
230
189
  version_requirements: !ruby/object:Gem::Requirement
231
190
  requirements:
232
- - - "~>"
191
+ - - ">="
233
192
  - !ruby/object:Gem::Version
234
- version: '1.2'
193
+ version: '0'
235
194
  - !ruby/object:Gem::Dependency
236
195
  name: rspec_junit_formatter
237
196
  requirement: !ruby/object:Gem::Requirement
238
197
  requirements:
239
- - - "~>"
198
+ - - ">="
240
199
  - !ruby/object:Gem::Version
241
- version: '0.2'
200
+ version: '0'
242
201
  type: :development
243
202
  prerelease: false
244
203
  version_requirements: !ruby/object:Gem::Requirement
245
204
  requirements:
246
- - - "~>"
205
+ - - ">="
247
206
  - !ruby/object:Gem::Version
248
- version: '0.2'
207
+ version: '0'
249
208
  - !ruby/object:Gem::Dependency
250
209
  name: rspec-rails
251
210
  requirement: !ruby/object:Gem::Requirement
252
211
  requirements:
253
- - - "~>"
212
+ - - ">="
254
213
  - !ruby/object:Gem::Version
255
- version: '6.0'
214
+ version: '0'
256
215
  type: :development
257
216
  prerelease: false
258
217
  version_requirements: !ruby/object:Gem::Requirement
259
218
  requirements:
260
- - - "~>"
219
+ - - ">="
261
220
  - !ruby/object:Gem::Version
262
- version: '6.0'
221
+ version: '0'
263
222
  - !ruby/object:Gem::Dependency
264
223
  name: rubocop
265
224
  requirement: !ruby/object:Gem::Requirement
266
225
  requirements:
267
- - - "~>"
226
+ - - ">="
268
227
  - !ruby/object:Gem::Version
269
- version: 1.65.1
228
+ version: '0'
270
229
  type: :development
271
230
  prerelease: false
272
231
  version_requirements: !ruby/object:Gem::Requirement
273
232
  requirements:
274
- - - "~>"
233
+ - - ">="
275
234
  - !ruby/object:Gem::Version
276
- version: 1.65.1
235
+ version: '0'
277
236
  - !ruby/object:Gem::Dependency
278
237
  name: rubocop-rails
279
238
  requirement: !ruby/object:Gem::Requirement
280
239
  requirements:
281
- - - "~>"
240
+ - - ">="
282
241
  - !ruby/object:Gem::Version
283
- version: 2.25.0
242
+ version: '0'
284
243
  type: :development
285
244
  prerelease: false
286
245
  version_requirements: !ruby/object:Gem::Requirement
287
246
  requirements:
288
- - - "~>"
247
+ - - ">="
289
248
  - !ruby/object:Gem::Version
290
- version: 2.25.0
249
+ version: '0'
291
250
  - !ruby/object:Gem::Dependency
292
251
  name: rubocop-rspec
293
252
  requirement: !ruby/object:Gem::Requirement
294
253
  requirements:
295
- - - "~>"
254
+ - - ">="
296
255
  - !ruby/object:Gem::Version
297
- version: 3.0.1
256
+ version: '0'
298
257
  type: :development
299
258
  prerelease: false
300
259
  version_requirements: !ruby/object:Gem::Requirement
301
260
  requirements:
302
- - - "~>"
261
+ - - ">="
303
262
  - !ruby/object:Gem::Version
304
- version: 3.0.1
263
+ version: '0'
305
264
  - !ruby/object:Gem::Dependency
306
265
  name: rubocop-rspec_rails
307
266
  requirement: !ruby/object:Gem::Requirement
308
267
  requirements:
309
- - - "~>"
268
+ - - ">="
310
269
  - !ruby/object:Gem::Version
311
- version: '2.30'
270
+ version: '0'
312
271
  type: :development
313
272
  prerelease: false
314
273
  version_requirements: !ruby/object:Gem::Requirement
315
274
  requirements:
316
- - - "~>"
275
+ - - ">="
317
276
  - !ruby/object:Gem::Version
318
- version: '2.30'
277
+ version: '0'
319
278
  - !ruby/object:Gem::Dependency
320
279
  name: simplecov
321
280
  requirement: !ruby/object:Gem::Requirement
322
281
  requirements:
323
- - - "~>"
282
+ - - ">="
324
283
  - !ruby/object:Gem::Version
325
- version: '0.15'
284
+ version: '0'
326
285
  type: :development
327
286
  prerelease: false
328
287
  version_requirements: !ruby/object:Gem::Requirement
329
288
  requirements:
330
- - - "~>"
289
+ - - ">="
331
290
  - !ruby/object:Gem::Version
332
- version: '0.15'
333
- description:
334
- email:
291
+ version: '0'
335
292
  executables: []
336
293
  extensions: []
337
294
  extra_rdoc_files: []
@@ -408,7 +365,6 @@ licenses:
408
365
  - MIT
409
366
  metadata:
410
367
  rubygems_mfa_required: 'true'
411
- post_install_message:
412
368
  rdoc_options: []
413
369
  require_paths:
414
370
  - lib
@@ -416,15 +372,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
416
372
  requirements:
417
373
  - - ">="
418
374
  - !ruby/object:Gem::Version
419
- version: '2.6'
375
+ version: '3.3'
420
376
  required_rubygems_version: !ruby/object:Gem::Requirement
421
377
  requirements:
422
378
  - - ">="
423
379
  - !ruby/object:Gem::Version
424
380
  version: '0'
425
381
  requirements: []
426
- rubygems_version: 3.4.19
427
- signing_key:
382
+ rubygems_version: 3.6.9
428
383
  specification_version: 4
429
384
  summary: Another business actions architecture for Rails apps
430
385
  test_files: []