granite 0.12.1 → 0.13.0

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: 52d8a88997b67bfb217a38ca0cc018dc73643b9bc3c6a6cae2360faba4df0733
4
- data.tar.gz: c544a8f9581989a4bb9aa46e31bba7ea41ad69275475d68dfb94ccffb12302e2
3
+ metadata.gz: 17fb5bd6029503d159cdb3e5dd88d0f58961a30e81e1752327bc261733c62df9
4
+ data.tar.gz: cf15fd7b77203667a28c57ede076ee17a1df1014eca1cf97f15cc6efc2a3755a
5
5
  SHA512:
6
- metadata.gz: 2b66c8f502e7010349f5a75cdcd641010ee415797c7ae91e1b6b292501910e1001ba102280f407b75863eef3851eaff7e4c851fd03620930af340929ceeac61c
7
- data.tar.gz: '08d61d57ebe13e3e40176d93a2dc4554606c998e8855f498338707faa455ad03e90cefee322141e6679e5a2c37ce27ab485646e166834c01d4a4ac364f557eae'
6
+ metadata.gz: 3540905bc5f0198b002bfd0be1c7a2dca41b594c6a21538c4cfa0763d85fe770fafb45227fb6f28b73e206b63dfe302a3cbe04af97cfe1e1f055f9adaa48f4dc
7
+ data.tar.gz: f8837fc5c591f9c4169bcf60f6c6c9de8a3158e66c52d961b871f8bfe753f63ee353d7e560fa7fd3cb8667656fb30da01acf2065377ea50d6162f74ce8757202
@@ -69,7 +69,7 @@ module Granite
69
69
 
70
70
  return unless collected_errors.any?
71
71
 
72
- log_errors(collected_errors[1..-1])
72
+ log_errors(collected_errors[1..])
73
73
  fail collected_errors.first
74
74
  end
75
75
 
@@ -4,6 +4,8 @@ module Granite
4
4
  # performer-enabled context.
5
5
  #
6
6
  class Proxy
7
+ extend Granite::Ruby3Compatibility
8
+
7
9
  def initialize(klass, performer)
8
10
  @klass = klass
9
11
  @performer = performer
@@ -13,7 +15,7 @@ module Granite
13
15
  "<#{@klass}PerformerProxy #{@performer}>"
14
16
  end
15
17
 
16
- def method_missing(method, *args, &block)
18
+ ruby2_keywords def method_missing(method, *args, &block)
17
19
  if @klass.respond_to?(method)
18
20
  @klass.with_proxy_performer(@performer) do
19
21
  @klass.public_send(method, *args, &block)
@@ -35,8 +35,7 @@ Do you have #{projector.action_class.name.underscore}##{projector.projector_name
35
35
 
36
36
  def required_params
37
37
  corresponding_route.required_parts
38
- .map { |name| [name, action.public_send(name)] }
39
- .to_h
38
+ .to_h { |name| [name, action.public_send(name)] }
40
39
  end
41
40
 
42
41
  def corresponding_route
@@ -30,16 +30,10 @@ module Granite::ProjectorHelpers
30
30
 
31
31
  private
32
32
 
33
- def setup_controller
34
- singleton_class.class_eval do
35
- def controller_class
36
- end
37
- end
38
-
39
- before do
40
- @controller = yield.controller_class.new
41
- @controller.class.instance_variable_set(:@controller_path, yield.projector_path)
42
- @controller.request = @request
33
+ def setup_controller(&block)
34
+ define_method :setup_controller_request_and_response do
35
+ @controller ||= instance_eval(&block).controller_class.new
36
+ super()
43
37
  end
44
38
  end
45
39
 
@@ -0,0 +1,15 @@
1
+ module Granite
2
+ module Ruby3Compatibility
3
+ # Method definition aimed to provide compatibility between Ruby 2.6 and 3.0
4
+ # It's being recommended in this article
5
+ # https://www.ruby-lang.org/en/news/2019/12/12/separation-of-positional-and-keyword-arguments-in-ruby-3-0/
6
+ #
7
+ # Example:
8
+ #
9
+ # ruby2_keywords def a_method(argument, *args, &block)
10
+ # delegating_to_method(argument, *args, &block)
11
+ # end
12
+ def ruby2_keywords(*)
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Granite
2
- VERSION = '0.12.1'.freeze
2
+ VERSION = '0.13.0'.freeze
3
3
  end
data/lib/granite.rb CHANGED
@@ -5,6 +5,7 @@ require 'granite/version'
5
5
  require 'granite/config'
6
6
  require 'granite/context'
7
7
  require 'granite/util'
8
+ require 'granite/ruby3_compatibility'
8
9
 
9
10
  module Granite
10
11
  def self.config
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: granite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toptal Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-07 00:00:00.000000000 Z
11
+ date: 2022-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -372,6 +372,7 @@ files:
372
372
  - lib/granite/rspec/projector_helpers.rb
373
373
  - lib/granite/rspec/raise_validation_error.rb
374
374
  - lib/granite/rspec/satisfy_preconditions.rb
375
+ - lib/granite/ruby3_compatibility.rb
375
376
  - lib/granite/translations.rb
376
377
  - lib/granite/typecasters.rb
377
378
  - lib/granite/util.rb
@@ -398,7 +399,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
398
399
  - !ruby/object:Gem::Version
399
400
  version: '0'
400
401
  requirements: []
401
- rubygems_version: 3.1.6
402
+ rubygems_version: 3.3.17
402
403
  signing_key:
403
404
  specification_version: 4
404
405
  summary: Another business actions architecture for Rails apps