snfoil 0.4.2 → 0.5.5

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: a86fe4150b2c2df4cc5ffc6142c0ab3744f66bb3d6bf3f42f9c28471b20a8a3a
4
- data.tar.gz: f1d3d97c134ce1ac7bbbf0a0653b8e3270b15f0433d2fbbe8d4e880c6284f672
3
+ metadata.gz: 272fc63879df9b9d3e112dcc8e73638a85a1a75f2faab91530e20fb888cf6c80
4
+ data.tar.gz: 6e5994391f96c17b4016f55e2c52c1cb1fff935c6dfdb05d20572e0232bdbd6b
5
5
  SHA512:
6
- metadata.gz: 7ca0c719e18fd9d9bc3953a928b47d11d54bb03509a840252f38c3c2c06f2fb8bc5a042df83144ddff763c8b2caaee67f14d1d6f56afb2e417a3d9b949b68b2c
7
- data.tar.gz: 8fd290ff0e93f0d7b1c3bd0f546b787c369a8cf3fa52de9b3a65e1115e0dfc9dff31c0af4a60f0af88c886d0c9835dcdb872d8adaca14513e4be5a03929a223b
6
+ metadata.gz: 90fc1492c594aabe7dc780fc341c3e3fb3d12a7c264b6e85fb08c3bfebd45a69d2cd87a0903e02c979e43c6909f7e5a9c32c39d8cc5f66edf2af541b2182dba6
7
+ data.tar.gz: 1f08ef48c2509a37f25016d9d5ca2e2e0b34bd828180d16e46f42715820690a0ee950e55c869079209f2fe604ab8f6671ddccb7fd1a8cc8592d330bbf0b33bda
@@ -10,6 +10,8 @@ require_relative 'sn_foil/contexts/destroy_context'
10
10
  require_relative 'sn_foil/context'
11
11
  require_relative 'sn_foil/policy'
12
12
  require_relative 'sn_foil/searcher'
13
+ require_relative 'sn_foil/adapters/orms/base_adapter'
14
+ require_relative 'sn_foil/adapters/orms/active_record'
13
15
  require 'active_support/core_ext/module/attribute_accessors'
14
16
  require 'logger'
15
17
 
@@ -1,11 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'base_adapter'
4
+
3
5
  module SnFoil
4
6
  module Adapters
5
7
  module ORMs
6
8
  class ActiveRecord < SnFoil::Adapters::ORMs::BaseAdapter
7
- def new(*params)
8
- self.class.new(__getobj__.new(*params))
9
+ def new(**params)
10
+ self.class.new(__getobj__.new(params))
9
11
  end
10
12
 
11
13
  def all
@@ -21,9 +23,13 @@ module SnFoil
21
23
  __getobj__.destroyed?
22
24
  end
23
25
 
24
- def attributes=(*attributes)
26
+ def attributes=(attributes)
25
27
  __getobj__.attributes = attributes
26
28
  end
29
+
30
+ def is_a?(klass)
31
+ __getobj__.class.object_id == klass.object_id
32
+ end
27
33
  end
28
34
  end
29
35
  end
@@ -4,7 +4,7 @@ module SnFoil
4
4
  module Adapters
5
5
  module ORMs
6
6
  class BaseAdapter < SimpleDelegator
7
- def new(*_params)
7
+ def new(**_params)
8
8
  raise NotImplementedError, '#new not implemented in adapter'
9
9
  end
10
10
 
@@ -20,7 +20,7 @@ module SnFoil
20
20
  raise NotImplementedError, '#destroy not implemented in adapter'
21
21
  end
22
22
 
23
- def attributes=(**_attributes)
23
+ def attributes=(_attributes)
24
24
  raise NotImplementedError, '#attributes= not implemented in adapter'
25
25
  end
26
26
  end
@@ -15,8 +15,8 @@ module SnFoil
15
15
  end
16
16
 
17
17
  class_methods do
18
- def build(params:, user: nil, **options)
19
- new(user).build(**options, params: params)
18
+ def build(params:, entity: nil, **options)
19
+ new(entity).build(**options, params: params)
20
20
  end
21
21
  end
22
22
 
@@ -17,8 +17,8 @@ module SnFoil
17
17
  class_methods do
18
18
  attr_reader :i_setup_create_hooks, :i_before_create_hooks, :i_after_create_hooks,
19
19
  :i_after_create_success_hooks, :i_after_create_failure_hooks
20
- def create(params:, user: nil, **options)
21
- new(user).create(**options, params: params)
20
+ def create(params:, entity: nil, **options)
21
+ new(entity).create(**options, params: params)
22
22
  end
23
23
 
24
24
  def setup_create(method = nil, **options, &block)
@@ -17,8 +17,8 @@ module SnFoil
17
17
  class_methods do
18
18
  attr_reader :i_setup_destroy_hooks, :i_before_destroy_hooks, :i_after_destroy_hooks,
19
19
  :i_after_destroy_success_hooks, :i_after_destroy_failure_hooks
20
- def destroy(id:, user: nil, **options)
21
- new(user).destroy(**options, id: id)
20
+ def destroy(id:, entity: nil, **options)
21
+ new(entity).destroy(**options, id: id)
22
22
  end
23
23
 
24
24
  def setup_destroy(method = nil, **options, &block)
@@ -15,8 +15,8 @@ module SnFoil
15
15
  class_methods do
16
16
  attr_reader :i_searcher, :i_setup_index_hooks
17
17
 
18
- def index(params: {}, user: nil, **options)
19
- new(user).index(**options, params: params)
18
+ def index(params: {}, entity: nil, **options)
19
+ new(entity).index(**options, params: params)
20
20
  end
21
21
 
22
22
  def searcher(klass = nil)
@@ -42,13 +42,13 @@ module SnFoil
42
42
  self.class.i_setup_hooks || []
43
43
  end
44
44
 
45
- attr_reader :user
46
- def initialize(user = nil)
47
- @user = user
45
+ attr_reader :entity
46
+ def initialize(entity = nil)
47
+ @entity = entity
48
48
  end
49
49
 
50
50
  def authorize(object, action, **options)
51
- return unless user # Add logging
51
+ return unless entity # Add logging
52
52
 
53
53
  policy = lookup_policy(object, options)
54
54
  raise Pundit::NotAuthorizedError, query: action, record: object, policy: policy unless policy.public_send(action)
@@ -59,7 +59,7 @@ module SnFoil
59
59
  def scope(object_class = nil, **options)
60
60
  object_class ||= model
61
61
  policy_name = lookup_policy(object_class, options).class.name
62
- "#{policy_name}::Scope".safe_constantize.new(wrap_object(object_class), user)
62
+ "#{policy_name}::Scope".safe_constantize.new(wrap_object(object_class), entity)
63
63
  end
64
64
 
65
65
  def wrap_object(object)
@@ -103,11 +103,11 @@ module SnFoil
103
103
 
104
104
  def lookup_policy(object, options)
105
105
  lookup = if options[:policy]
106
- options[:policy].new(user, object)
106
+ options[:policy].new(entity, object)
107
107
  elsif policy
108
- policy.new(user, object)
108
+ policy.new(entity, object)
109
109
  else
110
- Pundit.policy!(user, object)
110
+ Pundit.policy!(entity, object)
111
111
  end
112
112
 
113
113
  lookup.options = options if lookup.respond_to? :options=
@@ -15,8 +15,8 @@ module SnFoil
15
15
  class_methods do
16
16
  attr_reader :i_setup_show_hooks
17
17
 
18
- def show(id:, user: nil, **options)
19
- new(user).show(**options, id: id)
18
+ def show(id:, entity: nil, **options)
19
+ new(entity).show(**options, id: id)
20
20
  end
21
21
 
22
22
  def setup_show(method = nil, **options, &block)
@@ -17,8 +17,8 @@ module SnFoil
17
17
  class_methods do
18
18
  attr_reader :i_setup_update_hooks, :i_before_update_hooks, :i_after_update_hooks,
19
19
  :i_after_update_success_hooks, :i_after_update_failure_hooks
20
- def update(id:, params:, user: nil, **options)
21
- new(user).update(**options, id: id, params: params)
20
+ def update(id:, params:, entity: nil, **options)
21
+ new(entity).update(**options, id: id, params: params)
22
22
  end
23
23
 
24
24
  def setup_update(method = nil, **options, &block)
@@ -63,7 +63,7 @@ module SnFoil
63
63
  if setup.is_a?(Symbol) || setup.is_a?(String)
64
64
  send(setup, filtered_scope, params)
65
65
  else
66
- setup.call(filtered_scope, params)
66
+ instance_exec filtered_scope, params, &setup
67
67
  end
68
68
  end
69
69
 
@@ -78,7 +78,7 @@ module SnFoil
78
78
 
79
79
  return send(i_filter[:method], filtered_scope, params) if i_filter[:method]
80
80
 
81
- i_filter[:block].call(filtered_scope, params)
81
+ instance_exec filtered_scope, params, &i_filter[:block]
82
82
  end
83
83
 
84
84
  def filter_valid?(i_filter, params)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SnFoil
4
- VERSION = '0.4.2'
4
+ VERSION = '0.5.5'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snfoil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Howes
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-03-04 00:00:00.000000000 Z
12
+ date: 2020-07-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '5.1'
20
+ version: 5.2.4.3
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '5.1'
27
+ version: 5.2.4.3
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: logger
30
30
  requirement: !ruby/object:Gem::Requirement