passpartu 1.0.2 → 1.0.3

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: 6941eb262c351f25dd525ced8ce9d27cf03c90f6977d9e31674b5aa675db2ada
4
- data.tar.gz: e9fd5451850cc07bec8b6a2db6e23cadbc9415eb14945a39ab3913857c7e4628
3
+ metadata.gz: 7ff6ec8f5f35ec4a606df7c651868203f755d0d6f5b6152d23a152fa91d45126
4
+ data.tar.gz: 4ed57d9ced50f0c8ab11725835be3cc2ecb37a9309433146429312d22417dd13
5
5
  SHA512:
6
- metadata.gz: 8986a0743c963712de307a141bfe37405636ec7f952e29ae13c22c2512ec5ae04ef0f4e93e29a8ee5ffd32ebcf39675c7800e58332b451acfc34444d875178a6
7
- data.tar.gz: 5d1fde0b670dd30acd04bb819d503588cccaaacbae773076eee10fbd865a16fa370e822c1227d73388d588afd49f3cf96ad759a2db373ef8774d3206d39b3524
6
+ metadata.gz: c55101f249104c06a591cffa4df5126e3bf01a0f81a1bcd96d766b91d657f7997cfaebc81ae22e4da56265951ec47b751565c97a220ec17042945b9ba3e0fbb7
7
+ data.tar.gz: 5618f1ecf4e1b8ad3b27f802cefd2213e65ee08125e840aa32aab603b1ca85868fc4d79464bcacf4d9be75103174cff9474c05ef8d6d3058d0fd56381cc86f69
data/README.md CHANGED
@@ -1,7 +1,12 @@
1
- # Passpartu v1.0.2 - [changelog](https://github.com/coaxsoft/passpartu/blob/master/CHANGELOG.md)
1
+ # Passpartu v1.0.3 - [changelog](https://github.com/coaxsoft/passpartu/blob/master/CHANGELOG.md)
2
2
 
3
3
  Passpartu makes policies great again (works awesome with [Pundit](https://rubygems.org/gems/pundit)).
4
4
 
5
+ ### Tested with ruby:
6
+ - 2.7.3
7
+ - 3.0.0
8
+ - 3.1.1
9
+
5
10
  Instead of this:
6
11
 
7
12
  ```ruby
@@ -3,6 +3,7 @@
3
3
  module Passpartu
4
4
  class Patcher
5
5
  attr_reader :klass
6
+
6
7
  def initialize(klass)
7
8
  raise PolicyYmlNotFoundError if Passpartu.policy.nil?
8
9
 
@@ -15,11 +16,11 @@ module Passpartu
15
16
 
16
17
  def call
17
18
  klass.class_eval do
18
- define_method('can?') do |*keys, only: nil, except: nil, skip: nil, &block|
19
+ define_method(:can?) do |*keys, only: nil, except: nil, skip: nil, &block|
19
20
  Passpartu::BlockVerify.call(role, keys, only: only, except: except, skip: skip, &block)
20
21
  end
21
22
 
22
- Passpartu.policy.keys.each do |policy_role|
23
+ Passpartu.policy.each_key do |policy_role|
23
24
  define_method("#{policy_role}_can?") do |*keys, only: nil, except: nil, skip: nil, &block|
24
25
  role.to_s == policy_role && Passpartu::BlockVerify.call(role, keys,
25
26
  only: only,
@@ -5,6 +5,7 @@ module Passpartu
5
5
  class PolicyMissedError < StandardError; end
6
6
 
7
7
  attr_reader :result
8
+
8
9
  def initialize(result)
9
10
  @result = result
10
11
  end
@@ -23,7 +24,7 @@ module Passpartu
23
24
  private
24
25
 
25
26
  def boolean?
26
- [TrueClass, FalseClass].include?(result.class)
27
+ [true, false].include?(result)
27
28
  end
28
29
 
29
30
  def raise_error?
@@ -31,7 +31,8 @@ module Passpartu
31
31
  validate_result
32
32
  rescue StandardError => e
33
33
  if ['TrueClass does not have #dig method', 'FalseClass does not have #dig method'].include?(e.message)
34
- raise WaterfallError.new "Looks like you want to use check_waterfall feature, but it's set to 'false'. Otherwise check your #{Passpartu.config.policy_file} for validness"
34
+ raise WaterfallError,
35
+ "Looks like you want to use check_waterfall feature, but it's set to 'false'. Otherwise check your #{Passpartu.config.policy_file} for validness"
35
36
  else
36
37
  raise e
37
38
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Passpartu
4
- VERSION = '1.0.2'
4
+ VERSION = '1.0.3'
5
5
  end
data/lib/passpartu.rb CHANGED
@@ -13,21 +13,21 @@ module Passpartu
13
13
  class PolicyYmlNotFoundError < StandardError; end
14
14
  class WaterfallError < StandardError; end
15
15
 
16
- def self.included(policy_class)
17
- Passpartu::Patcher.call(policy_class)
18
- end
19
-
20
- def self.policy
21
- config.policy
22
- end
23
-
24
16
  class << self
25
17
  attr_accessor :config
26
- end
27
18
 
28
- def self.configure
29
- self.config ||= Config.new
30
- yield(config)
19
+ def included(policy_class)
20
+ Passpartu::Patcher.call(policy_class)
21
+ end
22
+
23
+ def policy
24
+ config.policy
25
+ end
26
+
27
+ def configure
28
+ self.config ||= Config.new
29
+ yield(config)
30
+ end
31
31
  end
32
32
 
33
33
  class Config
@@ -38,7 +38,7 @@ module Passpartu
38
38
 
39
39
  def initialize
40
40
  @policy_file = DEFAULT_POLICY_FILE
41
- set_policy(YAML.load_file(policy_file)) if File.exist?(policy_file)
41
+ self.policy = load_policy_file(policy_file) if File.exist?(policy_file)
42
42
  @raise_policy_missed_error = true
43
43
  @check_waterfall = false
44
44
  end
@@ -48,23 +48,27 @@ module Passpartu
48
48
 
49
49
  raise PolicyYmlNotFoundError unless File.exist?(policy_file)
50
50
 
51
- set_policy(YAML.load_file(policy_file))
51
+ self.policy = load_policy_file(policy_file)
52
52
  end
53
53
 
54
54
  def check_waterfall=(value)
55
55
  @check_waterfall = value
56
56
 
57
- if @check_waterfall
58
- @raise_policy_missed_error = false
59
- set_policy(@policy)
57
+ @check_waterfall.tap do |check_waterfall|
58
+ if check_waterfall
59
+ @raise_policy_missed_error = false
60
+ self.policy = @policy
61
+ end
60
62
  end
61
-
62
- @check_waterfall
63
63
  end
64
64
 
65
65
  private
66
66
 
67
- def set_policy(value)
67
+ def load_policy_file(path)
68
+ RUBY_VERSION.to_f >= 3.1 ? YAML.load_file(path, aliases: true) : YAML.load_file(path)
69
+ end
70
+
71
+ def policy=(value)
68
72
  @policy = patch_policy_booleans_if(value)
69
73
  end
70
74
 
@@ -73,11 +77,12 @@ module Passpartu
73
77
  return hash unless @check_waterfall
74
78
 
75
79
  hash.transform_values! do |value|
76
- if value.is_a?(TrueClass)
80
+ case value
81
+ when true
77
82
  value.define_singleton_method(:dig) { |*_keys| true }
78
- elsif value.is_a?(FalseClass)
83
+ when false
79
84
  value.define_singleton_method(:dig) { |*_keys| false }
80
- elsif
85
+ else
81
86
  patch_policy_booleans_if(value)
82
87
  end
83
88
 
@@ -93,8 +98,6 @@ module Passpartu
93
98
  !blank?(item)
94
99
  end
95
100
  end
96
-
97
- configure {}
98
101
  end
99
102
 
100
103
  initializer = './config/initializers/passpartu.rb'
data/passpartu.gemspec CHANGED
@@ -38,7 +38,10 @@ Gem::Specification.new do |spec|
38
38
  spec.require_paths = ['lib']
39
39
  spec.files = Dir['README.md', 'lib/**/*', 'lib/*', 'passpartu.gemspec']
40
40
 
41
- spec.add_development_dependency 'bundler', '~> 2.0'
42
- spec.add_development_dependency 'rake', '~> 12.3'
43
- spec.add_development_dependency 'rspec', '~> 3.0'
41
+ spec.add_development_dependency 'bundler', '~> 2.3'
42
+ spec.add_development_dependency 'rake', '~> 13.0'
43
+ spec.add_development_dependency 'rspec', '~> 3.11'
44
+ spec.add_development_dependency 'codecov', '~> 0.6'
45
+ spec.add_development_dependency 'dotenv', '~> 2.7'
46
+ spec.add_development_dependency 'simplecov', '~> 0.21'
44
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passpartu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - OrestF
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-12 00:00:00.000000000 Z
11
+ date: 2022-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,42 +16,84 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2.3'
20
20
  type: :development
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: '2.0'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '12.3'
33
+ version: '13.0'
34
34
  type: :development
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: '12.3'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '3.11'
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: '3.0'
54
+ version: '3.11'
55
+ - !ruby/object:Gem::Dependency
56
+ name: codecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: dotenv
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.7'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.7'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.21'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.21'
55
97
  description: |-
56
98
  Passpartu is a great tool to manage your policies.
57
99
  Keep all your policy rules in one file - passpartu.yml.
@@ -74,7 +116,7 @@ homepage: https://github.com/coaxsoft/passpartu
74
116
  licenses:
75
117
  - MIT
76
118
  metadata: {}
77
- post_install_message:
119
+ post_install_message:
78
120
  rdoc_options: []
79
121
  require_paths:
80
122
  - lib
@@ -89,8 +131,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
131
  - !ruby/object:Gem::Version
90
132
  version: '0'
91
133
  requirements: []
92
- rubygems_version: 3.0.1
93
- signing_key:
134
+ rubygems_version: 3.1.6
135
+ signing_key:
94
136
  specification_version: 4
95
137
  summary: Passpartu makes policies great again
96
138
  test_files: []