operator_recordable 0.1.0 → 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 +4 -4
- data/.gitignore +1 -0
- data/.rspec +0 -0
- data/.rubocop.yml +30 -0
- data/.travis.yml +28 -3
- data/CHANGELOG.md +45 -1
- data/Gemfile +4 -0
- data/LICENSE.txt +0 -0
- data/README.md +10 -3
- data/Rakefile +0 -0
- data/gemfiles/activerecord_5.0.gemfile +1 -0
- data/gemfiles/activerecord_5.0_with_request_store.gemfile +9 -0
- data/gemfiles/activerecord_5.1.gemfile +0 -0
- data/gemfiles/activerecord_5.1_with_request_store.gemfile +8 -0
- data/gemfiles/activerecord_5.2.gemfile +0 -0
- data/gemfiles/activerecord_5.2_with_request_store.gemfile +8 -0
- data/gemfiles/activerecord_6.0.gemfile +8 -0
- data/gemfiles/activerecord_6.0_with_request_store.gemfile +9 -0
- data/lib/operator_recordable.rb +6 -6
- data/lib/operator_recordable/configuration.rb +15 -3
- data/lib/operator_recordable/extension.rb +12 -0
- data/lib/operator_recordable/recorder.rb +31 -57
- data/lib/operator_recordable/store.rb +2 -6
- data/lib/operator_recordable/store/current_attributes_store.rb +0 -0
- data/lib/operator_recordable/store/request_store.rb +0 -0
- data/lib/operator_recordable/store/thread_store.rb +0 -0
- data/lib/operator_recordable/version.rb +1 -1
- data/operator_recordable.gemspec +17 -8
- metadata +32 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22c581a6ae6ddeb9369818a631861d56b3575df72e3f426ce6a25624dc293d15
|
4
|
+
data.tar.gz: b4a05d37ff0e899da55158e3dc0fd6695a09aed4bc9c62d5e637f39d7b469cf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a72f3ebda5df303a2971819f53796eac9e7d04f2409ae72c367ab5f4ec3016a6c3d852e308f17188eb1737fe2eb3831e9c633c0e11227a84e2a4a26d139896f7
|
7
|
+
data.tar.gz: 53bfd57f4e883ca9fcaee71b6339d25847d9474949dd0aada34d2370f1400121531232a4d4c1da2bc03eec681e74b1795abacd7620cfabeebdd6005ab059a964
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
File without changes
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.4
|
3
|
+
|
4
|
+
Style/AsciiComments:
|
5
|
+
Enabled: false
|
6
|
+
|
7
|
+
Style/Documentation:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
Style/RedundantSelf:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
Style/StringLiterals:
|
14
|
+
Enabled: true
|
15
|
+
EnforcedStyle: double_quotes
|
16
|
+
|
17
|
+
Layout/EndOfLine:
|
18
|
+
Enabled: true
|
19
|
+
EnforcedStyle: lf
|
20
|
+
|
21
|
+
Layout/LineLength:
|
22
|
+
Max: 128
|
23
|
+
|
24
|
+
Metrics/BlockLength:
|
25
|
+
Exclude:
|
26
|
+
- spec/**/*
|
27
|
+
|
28
|
+
Metrics/MethodLength:
|
29
|
+
Exclude:
|
30
|
+
- spec/**/*
|
data/.travis.yml
CHANGED
@@ -3,10 +3,35 @@ sudo: false
|
|
3
3
|
language: ruby
|
4
4
|
cache: bundler
|
5
5
|
rvm:
|
6
|
-
- 2.4
|
7
|
-
- 2.5
|
6
|
+
- 2.4
|
7
|
+
- 2.5
|
8
|
+
- 2.6
|
9
|
+
- 2.7
|
8
10
|
gemfile:
|
9
11
|
- gemfiles/activerecord_5.0.gemfile
|
12
|
+
- gemfiles/activerecord_5.0_with_request_store.gemfile
|
10
13
|
- gemfiles/activerecord_5.1.gemfile
|
14
|
+
- gemfiles/activerecord_5.1_with_request_store.gemfile
|
11
15
|
- gemfiles/activerecord_5.2.gemfile
|
12
|
-
|
16
|
+
- gemfiles/activerecord_5.2_with_request_store.gemfile
|
17
|
+
- gemfiles/activerecord_6.0.gemfile
|
18
|
+
- gemfiles/activerecord_6.0_with_request_store.gemfile
|
19
|
+
matrix:
|
20
|
+
exclude:
|
21
|
+
- rvm: 2.4
|
22
|
+
gemfile: gemfiles/activerecord_6.0.gemfile
|
23
|
+
- rvm: 2.4
|
24
|
+
gemfile: gemfiles/activerecord_6.0_with_request_store.gemfile
|
25
|
+
allow_failures:
|
26
|
+
- rvm: 2.7
|
27
|
+
gemfile: gemfiles/activerecord_5.0.gemfile
|
28
|
+
- rvm: 2.7
|
29
|
+
gemfile: gemfiles/activerecord_5.0_with_request_store.gemfile
|
30
|
+
- rvm: 2.7
|
31
|
+
gemfile: gemfiles/activerecord_5.1.gemfile
|
32
|
+
- rvm: 2.7
|
33
|
+
gemfile: gemfiles/activerecord_5.1_with_request_store.gemfile
|
34
|
+
- rvm: 2.7
|
35
|
+
gemfile: gemfiles/activerecord_5.2.gemfile
|
36
|
+
- rvm: 2.7
|
37
|
+
gemfile: gemfiles/activerecord_5.2_with_request_store.gemfile
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,50 @@
|
|
1
1
|
## Unreleased
|
2
2
|
|
3
3
|
|
4
|
-
##
|
4
|
+
## 1.0.0 (2020-10-16)
|
5
|
+
|
6
|
+
### Changes
|
7
|
+
|
8
|
+
* Support Ruby 2.7
|
9
|
+
|
10
|
+
|
11
|
+
## 0.4.0 (2019-08-22)
|
12
|
+
|
13
|
+
### Changes
|
14
|
+
|
15
|
+
* Support ActiveRecord 6.0.0
|
16
|
+
|
17
|
+
### Misc
|
18
|
+
|
19
|
+
* Improve rspec and CI
|
20
|
+
|
21
|
+
|
22
|
+
## 0.3.0 (2018-10-05)
|
23
|
+
|
24
|
+
### Breaking changes
|
25
|
+
|
26
|
+
* Change mixin module from `OperatorRecordable` to `OperatorRecordable::Extension`
|
27
|
+
|
28
|
+
|
29
|
+
## 0.2.0 (2018-09-27)
|
30
|
+
|
31
|
+
### Changes
|
32
|
+
|
33
|
+
* Add association name options
|
34
|
+
* Modify not to define unnecessary class methods for ActiveRecord model
|
35
|
+
|
36
|
+
### Misc
|
37
|
+
|
38
|
+
* Remove unecessary `require`
|
39
|
+
|
40
|
+
|
41
|
+
## 0.1.1 (2018-09-19)
|
42
|
+
|
43
|
+
### Misc
|
44
|
+
|
45
|
+
* Refactor internal structures
|
46
|
+
|
47
|
+
|
48
|
+
## 0.1.0 (2018-09-14)
|
5
49
|
|
6
50
|
* Initial release
|
data/Gemfile
CHANGED
@@ -6,3 +6,7 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
|
6
6
|
|
7
7
|
# Specify your gem's dependencies in operator_recordable.gemspec
|
8
8
|
gemspec
|
9
|
+
|
10
|
+
gem "activerecord", ENV.fetch("AR_VERSION", "~> 6.0.0")
|
11
|
+
gem "request_store" unless ENV["WITHOUT_REQUEST_STORE"]
|
12
|
+
gem "sqlite3", ENV.fetch("SQLITE3_VERSION", ">= 1.4.0")
|
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# OperatorRecordable
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/operator_recordable)
|
3
4
|
[](https://travis-ci.org/yujideveloper/operator_recordable)
|
4
5
|
[](https://codeclimate.com/github/yujideveloper/operator_recordable/maintainability)
|
5
6
|
|
@@ -37,6 +38,9 @@ OperatorRecordable.config = {
|
|
37
38
|
creator_column_name: "created_by",
|
38
39
|
updater_column_name: "updated_by",
|
39
40
|
deleter_column_name: "deleted_by",
|
41
|
+
creator_association_name: "creator",
|
42
|
+
updater_association_name: "updater",
|
43
|
+
deleter_association_name: "deleter",
|
40
44
|
operator_association_options: {},
|
41
45
|
operator_association_scope: nil,
|
42
46
|
store: :thread_store
|
@@ -51,9 +55,12 @@ OperatorRecordable.config = {
|
|
51
55
|
| `creator_column_name` | String | column name of creator. | `"created_by"` |
|
52
56
|
| `updater_column_name` | String | column name of updater. | `"updated_by"` |
|
53
57
|
| `deleter_column_name` | String | column name of deleter. | `"deleted_by"` |
|
58
|
+
| `creator_association_name` | String | association name of creator. | `"creator"` |
|
59
|
+
| `updater_association_name` | String | association name of updater. | `"updater"` |
|
60
|
+
| `deleter_association_name` | String | association name of deleter. | `"deleter"` |
|
54
61
|
| `operator_association_options` | Hash | options of operator associations. e.g. `{ optional: true }` | `{}` |
|
55
62
|
| `operator_association_scope` | Proc | The scope of operator associations. e.g. `-> { with_deleted }` | `nil` |
|
56
|
-
| `store` | Enum | operator store. any value of `:thread_store`, `:request_store` or
|
63
|
+
| `store` | Enum | operator store. any value of `:thread_store`, `:request_store` or `:current_attributes_store` | `:thread_store` |
|
57
64
|
|
58
65
|
#### Include `OperatorRecordable` in your model
|
59
66
|
|
@@ -61,7 +68,7 @@ OperatorRecordable.config = {
|
|
61
68
|
class ApplicationRecord < ActiveRecord::Base
|
62
69
|
self.abstract_class = true
|
63
70
|
|
64
|
-
include OperatorRecordable
|
71
|
+
include OperatorRecordable::Extension
|
65
72
|
end
|
66
73
|
```
|
67
74
|
|
@@ -113,7 +120,7 @@ require "operator_recordable/store/request_store"
|
|
113
120
|
#### `:current_attributes_store`
|
114
121
|
|
115
122
|
This store is implemented by using [`ActiveSupport::CurrentAttributes`](https://api.rubyonrails.org/v5.2.0/classes/ActiveSupport/CurrentAttributes.html).
|
116
|
-
So, this requires
|
123
|
+
So, this requires ActiveSupport 5.2 or later.
|
117
124
|
|
118
125
|
|
119
126
|
## Development
|
data/Rakefile
CHANGED
File without changes
|
File without changes
|
File without changes
|
data/lib/operator_recordable.rb
CHANGED
@@ -2,8 +2,7 @@
|
|
2
2
|
|
3
3
|
require "operator_recordable/version"
|
4
4
|
require "operator_recordable/configuration"
|
5
|
-
require "operator_recordable/
|
6
|
-
require "operator_recordable/recorder"
|
5
|
+
require "operator_recordable/extension"
|
7
6
|
|
8
7
|
module OperatorRecordable
|
9
8
|
def self.config
|
@@ -16,14 +15,15 @@ module OperatorRecordable
|
|
16
15
|
end
|
17
16
|
|
18
17
|
def self.operator
|
19
|
-
config.store[
|
18
|
+
config.store[operator_store_key]
|
20
19
|
end
|
21
20
|
|
22
21
|
def self.operator=(operator)
|
23
|
-
config.store[
|
22
|
+
config.store[operator_store_key] = operator
|
24
23
|
end
|
25
24
|
|
26
|
-
def self.
|
27
|
-
|
25
|
+
def self.operator_store_key
|
26
|
+
:operator_recordable_operator
|
28
27
|
end
|
28
|
+
private_class_method :operator_store_key
|
29
29
|
end
|
@@ -8,26 +8,38 @@ module OperatorRecordable
|
|
8
8
|
|
9
9
|
def initialize(config)
|
10
10
|
@config = initialize_config(config)
|
11
|
-
initialize_store
|
11
|
+
@store = initialize_store
|
12
12
|
end
|
13
13
|
|
14
14
|
%i[operator_class_name creator_column_name updater_column_name deleter_column_name
|
15
|
+
creator_association_name updater_association_name deleter_association_name
|
15
16
|
operator_association_options operator_association_scope].each do |name|
|
16
17
|
define_method name do
|
17
18
|
config[name]
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
22
|
+
def column_name_for(type)
|
23
|
+
config[:"#{type}_column_name"]
|
24
|
+
end
|
25
|
+
|
26
|
+
def association_name_for(type)
|
27
|
+
config[:"#{type}_association_name"]
|
28
|
+
end
|
29
|
+
|
21
30
|
private
|
22
31
|
|
23
32
|
attr_reader :config
|
24
33
|
|
25
|
-
def initialize_config(config)
|
34
|
+
def initialize_config(config) # rubocop:disable Metrics/MethodLength
|
26
35
|
{
|
27
36
|
operator_class_name: "Operator",
|
28
37
|
creator_column_name: "created_by",
|
29
38
|
updater_column_name: "updated_by",
|
30
39
|
deleter_column_name: "deleted_by",
|
40
|
+
creator_association_name: "creator",
|
41
|
+
updater_association_name: "updater",
|
42
|
+
deleter_association_name: "deleter",
|
31
43
|
operator_association_options: {},
|
32
44
|
operator_association_scope: nil,
|
33
45
|
store: :thread_store
|
@@ -37,7 +49,7 @@ module OperatorRecordable
|
|
37
49
|
def initialize_store
|
38
50
|
args = [*config[:store]]
|
39
51
|
name = args.shift
|
40
|
-
|
52
|
+
Store.fetch(name).new(*args)
|
41
53
|
end
|
42
54
|
|
43
55
|
class Model
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "operator_recordable/recorder"
|
4
|
+
|
5
|
+
module OperatorRecordable
|
6
|
+
module Extension
|
7
|
+
def self.included(class_or_module)
|
8
|
+
class_or_module.extend Recorder.new(OperatorRecordable.config)
|
9
|
+
end
|
10
|
+
private_class_method :included
|
11
|
+
end
|
12
|
+
end
|
@@ -6,64 +6,58 @@ module OperatorRecordable
|
|
6
6
|
class Recorder < ::Module
|
7
7
|
def initialize(config)
|
8
8
|
define_activate_method(config)
|
9
|
-
define_predicate_methods
|
10
9
|
end
|
11
10
|
|
12
11
|
private
|
13
12
|
|
14
|
-
def define_activate_method(config)
|
13
|
+
def define_activate_method(config) # rubocop:disable Metrics/MethodLength
|
15
14
|
m = self
|
16
15
|
|
17
|
-
define_method :record_operator_on do |*actions|
|
18
|
-
|
16
|
+
define_method :record_operator_on do |*actions| # rubocop:disable Metrics/MethodLength
|
17
|
+
c = Configuration::Model.new(actions)
|
19
18
|
|
20
|
-
if record_creator?
|
19
|
+
if c.record_creator?
|
21
20
|
m.__send__(:run_creator_dsl, self, config)
|
22
21
|
m.__send__(:define_creator_instance_methods, self, config)
|
23
22
|
end
|
24
23
|
|
25
|
-
if record_updater?
|
24
|
+
if c.record_updater?
|
26
25
|
m.__send__(:run_updater_dsl, self, config)
|
27
26
|
m.__send__(:define_updater_instance_methods, self, config)
|
28
27
|
end
|
29
28
|
|
30
|
-
if record_deleter?
|
29
|
+
if c.record_deleter?
|
31
30
|
m.__send__(:run_deleter_dsl, self, config)
|
32
31
|
m.__send__(:define_deleter_instance_methods, self, config)
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
36
35
|
|
37
|
-
def run_creator_dsl(
|
38
|
-
|
39
|
-
|
40
|
-
belongs_to :creator, config.operator_association_scope,
|
41
|
-
{ foreign_key: config.creator_column_name,
|
42
|
-
class_name: config.operator_class_name }.merge(config.operator_association_options)
|
43
|
-
end
|
36
|
+
def run_creator_dsl(klass, config)
|
37
|
+
klass.before_create :"assign_#{config.creator_association_name}"
|
38
|
+
run_add_association_dsl(:creator, klass, config)
|
44
39
|
end
|
45
40
|
|
46
|
-
def run_updater_dsl(
|
47
|
-
|
48
|
-
|
49
|
-
belongs_to :updater, config.operator_association_scope,
|
50
|
-
{ foreign_key: config.updater_column_name,
|
51
|
-
class_name: config.operator_class_name }.merge(config.operator_association_options)
|
52
|
-
end
|
41
|
+
def run_updater_dsl(klass, config)
|
42
|
+
klass.before_save :"assign_#{config.updater_association_name}"
|
43
|
+
run_add_association_dsl(:updater, klass, config)
|
53
44
|
end
|
54
45
|
|
55
|
-
def run_deleter_dsl(
|
56
|
-
|
57
|
-
|
58
|
-
belongs_to :deleter, config.operator_association_scope,
|
59
|
-
{ foreign_key: config.deleter_column_name,
|
60
|
-
class_name: config.operator_class_name }.merge(config.operator_association_options)
|
61
|
-
end
|
46
|
+
def run_deleter_dsl(klass, config)
|
47
|
+
klass.before_destroy :"assign_#{config.deleter_association_name}"
|
48
|
+
run_add_association_dsl(:deleter, klass, config)
|
62
49
|
end
|
63
50
|
|
64
|
-
def
|
65
|
-
|
66
|
-
|
51
|
+
def run_add_association_dsl(type, klass, config)
|
52
|
+
klass.belongs_to config.association_name_for(type).to_sym,
|
53
|
+
config.operator_association_scope,
|
54
|
+
**{ foreign_key: config.column_name_for(type),
|
55
|
+
class_name: config.operator_class_name }.merge(config.operator_association_options)
|
56
|
+
end
|
57
|
+
|
58
|
+
def define_creator_instance_methods(klass, config)
|
59
|
+
klass.class_eval <<~END_OF_DEF, __FILE__, __LINE__ + 1
|
60
|
+
private def assign_#{config.creator_association_name}
|
67
61
|
return unless (op = OperatorRecordable.operator)
|
68
62
|
|
69
63
|
self.#{config.creator_column_name} = op.id
|
@@ -71,9 +65,9 @@ module OperatorRecordable
|
|
71
65
|
END_OF_DEF
|
72
66
|
end
|
73
67
|
|
74
|
-
def define_updater_instance_methods(
|
75
|
-
|
76
|
-
private def
|
68
|
+
def define_updater_instance_methods(klass, config)
|
69
|
+
klass.class_eval <<~END_OF_DEF, __FILE__, __LINE__ + 1
|
70
|
+
private def assign_#{config.updater_association_name}
|
77
71
|
return if !self.new_record? && !self.changed?
|
78
72
|
return unless (op = OperatorRecordable.operator)
|
79
73
|
|
@@ -82,9 +76,9 @@ module OperatorRecordable
|
|
82
76
|
END_OF_DEF
|
83
77
|
end
|
84
78
|
|
85
|
-
def define_deleter_instance_methods(
|
86
|
-
|
87
|
-
private def
|
79
|
+
def define_deleter_instance_methods(klass, config)
|
80
|
+
klass.class_eval <<~END_OF_DEF, __FILE__, __LINE__ + 1
|
81
|
+
private def assign_#{config.deleter_association_name}
|
88
82
|
return if self.frozen?
|
89
83
|
return unless (op = OperatorRecordable.operator)
|
90
84
|
|
@@ -96,25 +90,5 @@ module OperatorRecordable
|
|
96
90
|
end
|
97
91
|
END_OF_DEF
|
98
92
|
end
|
99
|
-
|
100
|
-
def define_predicate_methods
|
101
|
-
define_method :record_creator? do
|
102
|
-
instance_variable_defined?(:@_record_operator_on) &&
|
103
|
-
@_record_operator_on.record_creator?
|
104
|
-
end
|
105
|
-
private :record_creator?
|
106
|
-
|
107
|
-
define_method :record_updater? do
|
108
|
-
instance_variable_defined?(:@_record_operator_on) &&
|
109
|
-
@_record_operator_on.record_updater?
|
110
|
-
end
|
111
|
-
private :record_updater?
|
112
|
-
|
113
|
-
define_method :record_deleter? do
|
114
|
-
instance_variable_defined?(:@_record_operator_on) &&
|
115
|
-
@_record_operator_on.record_deleter?
|
116
|
-
end
|
117
|
-
private :record_deleter?
|
118
|
-
end
|
119
93
|
end
|
120
94
|
end
|
@@ -1,17 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module OperatorRecordable
|
4
|
-
|
5
|
-
def self.operator_store_key
|
6
|
-
:operator_recordable_operator
|
7
|
-
end
|
8
|
-
|
4
|
+
module Store
|
9
5
|
def self.register(name, klass)
|
10
6
|
@stores ||= {}
|
11
7
|
@stores[name] = klass
|
12
8
|
end
|
13
9
|
|
14
|
-
def self.
|
10
|
+
def self.fetch(name)
|
15
11
|
@stores.fetch(name)
|
16
12
|
end
|
17
13
|
end
|
File without changes
|
File without changes
|
File without changes
|
data/operator_recordable.gemspec
CHANGED
@@ -4,14 +4,23 @@ lib = File.expand_path("lib", __dir__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require "operator_recordable/version"
|
6
6
|
|
7
|
-
Gem::Specification.new do |spec|
|
7
|
+
Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
8
8
|
spec.name = "operator_recordable"
|
9
9
|
spec.version = OperatorRecordable::VERSION
|
10
10
|
spec.authors = ["Yuji Hanamura"]
|
11
11
|
spec.email = ["yuji.developer@gmail.com"]
|
12
12
|
|
13
|
-
spec.summary = "
|
14
|
-
|
13
|
+
spec.summary = <<~SUMMARY.tr("\n", " ")
|
14
|
+
OperatorRecordable is a Rails plugin to set created_by, updated_by, and
|
15
|
+
deleted_by to ActiveRecord objects.
|
16
|
+
SUMMARY
|
17
|
+
spec.description = <<~DESC.tr("\n", " ") # rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators
|
18
|
+
OperatorRecordable is a Rails plugin that makes your ActiveRecord models
|
19
|
+
to be saved or logically deleted with automatically set created_by,
|
20
|
+
updated_by, and deleted_by. Also it makes creator, updater, deleter
|
21
|
+
belongs_to association if a class has created_by, updated_by, or
|
22
|
+
deleted_by.
|
23
|
+
DESC
|
15
24
|
spec.homepage = "https://github.com/yujideveloper/operator_recordable"
|
16
25
|
spec.license = "MIT"
|
17
26
|
|
@@ -24,11 +33,11 @@ Gem::Specification.new do |spec|
|
|
24
33
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
34
|
spec.require_paths = ["lib"]
|
26
35
|
|
27
|
-
spec.add_dependency "activerecord", "
|
28
|
-
spec.add_development_dependency "bundler", "
|
36
|
+
spec.add_dependency "activerecord", ">= 5.0"
|
37
|
+
spec.add_development_dependency "bundler", ">= 1.16"
|
29
38
|
spec.add_development_dependency "pry", ">= 0.10.0"
|
30
|
-
spec.add_development_dependency "rake", "
|
31
|
-
spec.add_development_dependency "request_store"
|
39
|
+
spec.add_development_dependency "rake", ">= 10.0"
|
32
40
|
spec.add_development_dependency "rspec", "~> 3.7"
|
33
|
-
spec.add_development_dependency "
|
41
|
+
spec.add_development_dependency "rubocop", ">= 0.78.0"
|
42
|
+
spec.add_development_dependency "sqlite3", ">= 1.3.13"
|
34
43
|
end
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: operator_recordable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuji Hanamura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '5.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
26
|
version: '5.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.16'
|
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
40
|
version: '1.16'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -56,62 +56,62 @@ dependencies:
|
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '10.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '3.7'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '3.7'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rubocop
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 0.78.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 0.78.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: sqlite3
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 1.3.13
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
111
|
-
description: OperatorRecordable is a Rails plugin that makes your ActiveRecord models
|
110
|
+
version: 1.3.13
|
111
|
+
description: 'OperatorRecordable is a Rails plugin that makes your ActiveRecord models
|
112
112
|
to be saved or logically deleted with automatically set created_by, updated_by,
|
113
113
|
and deleted_by. Also it makes creator, updater, deleter belongs_to association if
|
114
|
-
a class has created_by, updated_by, or deleted_by.
|
114
|
+
a class has created_by, updated_by, or deleted_by. '
|
115
115
|
email:
|
116
116
|
- yuji.developer@gmail.com
|
117
117
|
executables: []
|
@@ -120,6 +120,7 @@ extra_rdoc_files: []
|
|
120
120
|
files:
|
121
121
|
- ".gitignore"
|
122
122
|
- ".rspec"
|
123
|
+
- ".rubocop.yml"
|
123
124
|
- ".travis.yml"
|
124
125
|
- CHANGELOG.md
|
125
126
|
- Gemfile
|
@@ -129,10 +130,16 @@ files:
|
|
129
130
|
- bin/console
|
130
131
|
- bin/setup
|
131
132
|
- gemfiles/activerecord_5.0.gemfile
|
133
|
+
- gemfiles/activerecord_5.0_with_request_store.gemfile
|
132
134
|
- gemfiles/activerecord_5.1.gemfile
|
135
|
+
- gemfiles/activerecord_5.1_with_request_store.gemfile
|
133
136
|
- gemfiles/activerecord_5.2.gemfile
|
137
|
+
- gemfiles/activerecord_5.2_with_request_store.gemfile
|
138
|
+
- gemfiles/activerecord_6.0.gemfile
|
139
|
+
- gemfiles/activerecord_6.0_with_request_store.gemfile
|
134
140
|
- lib/operator_recordable.rb
|
135
141
|
- lib/operator_recordable/configuration.rb
|
142
|
+
- lib/operator_recordable/extension.rb
|
136
143
|
- lib/operator_recordable/recorder.rb
|
137
144
|
- lib/operator_recordable/store.rb
|
138
145
|
- lib/operator_recordable/store/current_attributes_store.rb
|
@@ -159,8 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
166
|
- !ruby/object:Gem::Version
|
160
167
|
version: '0'
|
161
168
|
requirements: []
|
162
|
-
|
163
|
-
rubygems_version: 2.7.6
|
169
|
+
rubygems_version: 3.1.4
|
164
170
|
signing_key:
|
165
171
|
specification_version: 4
|
166
172
|
summary: OperatorRecordable is a Rails plugin to set created_by, updated_by, and deleted_by
|