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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fdc77dbb80f781c9560906bfcf32c555861a1dca7939261c0380db0e86d9b635
4
- data.tar.gz: 7142047e67d09890a16e959a81c0c0e7f5ab2fd33077f32832b8dba4be9ca514
3
+ metadata.gz: 22c581a6ae6ddeb9369818a631861d56b3575df72e3f426ce6a25624dc293d15
4
+ data.tar.gz: b4a05d37ff0e899da55158e3dc0fd6695a09aed4bc9c62d5e637f39d7b469cf2
5
5
  SHA512:
6
- metadata.gz: 5e83aaeec3864a96e51cf4dc05298a6a585c524fe67e34fb80953b7dc13902e384fe8b225435851c5d22bb0b84b6cf4f335df4845b92b818194f9e958f51432a
7
- data.tar.gz: ada73774a5ca90f7d77cfaf735ede38e111249a4698e5d624a6fd1a94edd840a6ae5f39d88fb200c016204551ecf9aec3e2f8f2c126f4d8b2c5e2742fba9d62f
6
+ metadata.gz: a72f3ebda5df303a2971819f53796eac9e7d04f2409ae72c367ab5f4ec3016a6c3d852e308f17188eb1737fe2eb3831e9c633c0e11227a84e2a4a26d139896f7
7
+ data.tar.gz: 53bfd57f4e883ca9fcaee71b6339d25847d9474949dd0aada34d2370f1400121531232a4d4c1da2bc03eec681e74b1795abacd7620cfabeebdd6005ab059a964
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  /Gemfile.lock
5
5
  /coverage/
6
6
  /doc/
7
+ /gemfiles/*.gemfile.lock
7
8
  /pkg/
8
9
  /spec/reports/
9
10
  /tmp/
data/.rspec CHANGED
File without changes
@@ -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/**/*
@@ -3,10 +3,35 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.4.4
7
- - 2.5.1
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
- before_install: gem install bundler -v 1.16.4
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
@@ -1,6 +1,50 @@
1
1
  ## Unreleased
2
2
 
3
3
 
4
- ## 0.1.0 (2018/09/14)
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")
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 `current_attributes_store` | `:thread_store` |
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 ActivgeSupport 5.2 or later.
123
+ So, this requires ActiveSupport 5.2 or later.
117
124
 
118
125
 
119
126
  ## Development
data/Rakefile CHANGED
File without changes
@@ -3,5 +3,6 @@
3
3
  source "https://rubygems.org/"
4
4
 
5
5
  gem "activerecord", "~> 5.0.0"
6
+ gem "sqlite3", "~> 1.3.13"
6
7
 
7
8
  gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org/"
4
+
5
+ gem "activerecord", "~> 5.0.0"
6
+ gem "request_store"
7
+ gem "sqlite3", "~> 1.3.13"
8
+
9
+ gemspec path: "../"
File without changes
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org/"
4
+
5
+ gem "activerecord", "~> 5.1.0"
6
+ gem "request_store"
7
+
8
+ gemspec path: "../"
File without changes
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org/"
4
+
5
+ gem "activerecord", "~> 5.2.0"
6
+ gem "request_store"
7
+
8
+ gemspec path: "../"
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org/"
4
+
5
+ gem "activerecord", "~> 6.0.0"
6
+ gem "sqlite3", "~> 1.4"
7
+
8
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org/"
4
+
5
+ gem "activerecord", "~> 6.0.0"
6
+ gem "request_store"
7
+ gem "sqlite3", "~> 1.4"
8
+
9
+ gemspec path: "../"
@@ -2,8 +2,7 @@
2
2
 
3
3
  require "operator_recordable/version"
4
4
  require "operator_recordable/configuration"
5
- require "operator_recordable/store"
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[Store.operator_store_key]
18
+ config.store[operator_store_key]
20
19
  end
21
20
 
22
21
  def self.operator=(operator)
23
- config.store[Store.operator_store_key] = operator
22
+ config.store[operator_store_key] = operator
24
23
  end
25
24
 
26
- def self.included(class_or_module)
27
- class_or_module.extend Recorder.new(config)
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
- @store = Store.fetch_class(name).new(*args)
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
- @_record_operator_on = Configuration::Model.new(actions)
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(class_or_module, config)
38
- class_or_module.class_exec do
39
- before_create :assign_creator
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(class_or_module, config)
47
- class_or_module.class_exec do
48
- before_save :assign_updater
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(class_or_module, config)
56
- class_or_module.class_exec do
57
- before_destroy :assign_deleter
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 define_creator_instance_methods(class_or_module, config)
65
- class_or_module.class_eval <<~END_OF_DEF, __FILE__, __LINE__ + 1
66
- private def assign_creator
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(class_or_module, config)
75
- class_or_module.class_eval <<~END_OF_DEF, __FILE__, __LINE__ + 1
76
- private def assign_updater
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(class_or_module, config)
86
- class_or_module.class_eval <<~END_OF_DEF, __FILE__, __LINE__ + 1
87
- private def assign_deleter
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
- class Store
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.fetch_class(name)
10
+ def self.fetch(name)
15
11
  @stores.fetch(name)
16
12
  end
17
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OperatorRecordable
4
- VERSION = "0.1.0"
4
+ VERSION = "1.0.0"
5
5
  end
@@ -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 = "OperatorRecordable is a Rails plugin to set created_by, updated_by, and deleted_by to ActiveRecord objects."
14
- spec.description = "OperatorRecordable is a Rails plugin that makes your ActiveRecord models to be saved or logically deleted with automatically set created_by, updated_by, and deleted_by. Also it makes creator, updater, deleter belongs_to association if a class has created_by, updated_by, or deleted_by."
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", "~> 5.0"
28
- spec.add_development_dependency "bundler", "~> 1.16"
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", "~> 10.0"
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 "sqlite3", "~> 1.0"
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: 0.1.0
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: 2018-09-14 00:00:00.000000000 Z
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: request_store
70
+ name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
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: '0'
82
+ version: '3.7'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rspec
84
+ name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '3.7'
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: '3.7'
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: '1.0'
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: '1.0'
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
- rubyforge_project:
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