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 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