operator_recordable 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/operator_recordable.svg)](https://badge.fury.io/rb/operator_recordable)
|
3
4
|
[![Build Status](https://travis-ci.org/yujideveloper/operator_recordable.svg?branch=master)](https://travis-ci.org/yujideveloper/operator_recordable)
|
4
5
|
[![Maintainability](https://api.codeclimate.com/v1/badges/aaa0fcd567da9232a847/maintainability)](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
|