logidze 0.9.0 → 0.10.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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +3 -0
  3. data/.github/ISSUE_TEMPLATE.md +20 -0
  4. data/.github/PULL_REQUEST_TEMPLATE.md +29 -0
  5. data/.rubocop.yml +30 -69
  6. data/.travis.yml +8 -5
  7. data/CHANGELOG.md +35 -1
  8. data/Gemfile +2 -0
  9. data/LICENSE.txt +1 -1
  10. data/README.md +67 -26
  11. data/Rakefile +2 -2
  12. data/assets/pg_log_data_chart.png +0 -0
  13. data/bench/performance/README.md +2 -2
  14. data/bench/performance/diff_bench.rb +15 -13
  15. data/bench/performance/insert_bench.rb +6 -4
  16. data/bench/performance/memory_profile.rb +12 -9
  17. data/bench/performance/setup.rb +35 -28
  18. data/bench/performance/update_bench.rb +8 -6
  19. data/bin/setup +2 -2
  20. data/gemfiles/rails42.gemfile +1 -0
  21. data/gemfiles/rails6.gemfile +6 -0
  22. data/lib/generators/logidze/install/install_generator.rb +3 -2
  23. data/lib/generators/logidze/model/model_generator.rb +12 -12
  24. data/lib/logidze.rb +44 -18
  25. data/lib/logidze/engine.rb +2 -1
  26. data/lib/logidze/has_logidze.rb +14 -4
  27. data/lib/logidze/history.rb +6 -5
  28. data/lib/logidze/history/type.rb +1 -1
  29. data/lib/logidze/history/version.rb +6 -5
  30. data/lib/logidze/ignore_log_data.rb +31 -4
  31. data/lib/logidze/ignore_log_data/association.rb +11 -0
  32. data/lib/logidze/ignore_log_data/default_scope_patch.rb +25 -0
  33. data/lib/logidze/ignore_log_data/ignored_columns.rb +1 -1
  34. data/lib/logidze/ignore_log_data/missing_attribute_patch.rb +3 -1
  35. data/lib/logidze/meta.rb +1 -1
  36. data/lib/logidze/migration.rb +1 -0
  37. data/lib/logidze/model.rb +14 -4
  38. data/lib/logidze/version.rb +2 -1
  39. data/lib/logidze/versioned_association.rb +0 -1
  40. data/logidze.gemspec +16 -8
  41. metadata +28 -60
  42. data/.hound.yml +0 -3
data/lib/logidze.rb CHANGED
@@ -1,40 +1,66 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "logidze/version"
3
4
 
4
5
  # Logidze provides tools for adding in-table JSON-based audit to DB tables
5
6
  # and ActiveRecord extensions to work with changes history.
6
7
  module Logidze
7
- require 'logidze/history'
8
- require 'logidze/model'
9
- require 'logidze/versioned_association'
10
- require 'logidze/ignore_log_data'
11
- require 'logidze/has_logidze'
12
- require 'logidze/meta'
8
+ require "logidze/history"
9
+ require "logidze/model"
10
+ require "logidze/versioned_association"
11
+ require "logidze/ignore_log_data"
12
+ require "logidze/has_logidze"
13
+ require "logidze/meta"
13
14
 
14
15
  extend Logidze::Meta
15
16
 
16
- require 'logidze/engine' if defined?(Rails)
17
+ require "logidze/engine" if defined?(Rails)
17
18
 
18
19
  class << self
19
20
  # Determines if Logidze should append a version to the log after updating an old version.
20
21
  attr_accessor :append_on_undo
22
+
21
23
  attr_writer :associations_versioning
22
24
 
23
25
  def associations_versioning
24
26
  @associations_versioning || false
25
27
  end
26
- end
27
28
 
28
- # Temporary disable DB triggers.
29
- #
30
- # @example
31
- # Logidze.without_logging { Post.update_all(active: true) }
32
- def self.without_logging
33
- ActiveRecord::Base.transaction do
34
- ActiveRecord::Base.connection.execute "SET LOCAL logidze.disabled TO on;"
35
- res = yield
36
- ActiveRecord::Base.connection.execute "SET LOCAL logidze.disabled TO DEFAULT;"
37
- res
29
+ # Determines if Logidze should exclude log data from SELECT statements
30
+ attr_writer :ignore_log_data_by_default
31
+
32
+ def ignore_log_data_by_default
33
+ @ignore_log_data_by_default || false
34
+ end
35
+
36
+ attr_writer :force_load_log_data
37
+
38
+ def force_load_log_data
39
+ @force_load_log_data || false
40
+ end
41
+
42
+ # Temporary disable DB triggers.
43
+ #
44
+ # @example
45
+ # Logidze.without_logging { Post.update_all(active: true) }
46
+ def without_logging
47
+ ActiveRecord::Base.transaction do
48
+ ActiveRecord::Base.connection.execute "SET LOCAL logidze.disabled TO on;"
49
+ res = yield
50
+ ActiveRecord::Base.connection.execute "SET LOCAL logidze.disabled TO DEFAULT;"
51
+ res
52
+ end
53
+ end
54
+
55
+ # Temporary turn off ignore_log_data_by_default config
56
+ #
57
+ # @example
58
+ # Logidze.with_log_data { Post.update_all(active: true) }
59
+ def with_log_data
60
+ Logidze.force_load_log_data = true
61
+ yield
62
+ ensure
63
+ Logidze.force_load_log_data = false
38
64
  end
39
65
  end
40
66
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require 'logidze'
2
+
3
+ require "logidze"
3
4
 
4
5
  module Logidze
5
6
  class Engine < Rails::Engine # :nodoc:
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require 'active_support'
2
+
3
+ require "active_support"
3
4
 
4
5
  module Logidze
5
6
  # Add `has_logidze` method to AR::Base
@@ -9,10 +10,19 @@ module Logidze
9
10
  module ClassMethods # :nodoc:
10
11
  # Include methods to work with history.
11
12
  #
12
- # rubocop:disable Naming/PredicateName
13
- def has_logidze(ignore_log_data: false)
13
+ def has_logidze(ignore_log_data: nil)
14
14
  include Logidze::Model
15
- include Logidze::IgnoreLogData if ignore_log_data
15
+ include Logidze::IgnoreLogData
16
+
17
+ @ignore_log_data = ignore_log_data
18
+ end
19
+
20
+ def ignores_log_data?
21
+ if @ignore_log_data.nil? && Logidze.ignore_log_data_by_default
22
+ !Logidze.force_load_log_data
23
+ else
24
+ @ignore_log_data
25
+ end
16
26
  end
17
27
  end
18
28
  end
@@ -1,15 +1,16 @@
1
1
  # frozen_string_literal: true
2
- require 'active_support/core_ext/module/delegation'
2
+
3
+ require "active_support/core_ext/module/delegation"
3
4
 
4
5
  module Logidze
5
6
  # Log data wrapper
6
7
  class History
7
- require 'logidze/history/version'
8
+ require "logidze/history/version"
8
9
 
9
10
  # History key
10
- HISTORY = 'h'
11
+ HISTORY = "h"
11
12
  # Version key
12
- VERSION = 'v'
13
+ VERSION = "v"
13
14
 
14
15
  attr_reader :data
15
16
 
@@ -128,7 +129,7 @@ module Logidze
128
129
 
129
130
  def build_changes(a, b)
130
131
  b.each_with_object({}) do |(k, v), acc|
131
- acc[k] = { "old" => a[k], "new" => v } unless v == a[k]
132
+ acc[k] = {"old" => a[k], "new" => v} unless v == a[k]
132
133
  end
133
134
  end
134
135
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_model/type'
3
+ require "active_model/type"
4
4
 
5
5
  module Logidze
6
6
  class History
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Logidze
3
4
  class History
4
5
  # Represents one log item
5
6
  class Version
6
7
  # Timestamp key
7
- TS = 'ts'
8
+ TS = "ts"
8
9
  # Changes key
9
- CHANGES = 'c'
10
+ CHANGES = "c"
10
11
  # Responsible ID
11
- RESPONSIBLE = 'r'
12
+ RESPONSIBLE = "r"
12
13
  # Meta Responsible ID
13
- META_RESPONSIBLE = '_r'
14
+ META_RESPONSIBLE = "_r"
14
15
  # Meta key
15
- META = 'm'
16
+ META = "m"
16
17
 
17
18
  attr_reader :data
18
19
 
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "logidze/ignore_log_data/association"
4
+
3
5
  module Logidze
4
- # Add `has_logidze` method to AR::Base
5
- module IgnoreLogData
6
+ module IgnoreLogData # :nodoc:
6
7
  extend ActiveSupport::Concern
7
8
 
8
9
  included do
@@ -16,15 +17,41 @@ module Logidze
16
17
 
17
18
  require "logidze/ignore_log_data/missing_attribute_patch"
18
19
  include MissingAttributePatch
20
+
21
+ require "logidze/ignore_log_data/default_scope_patch"
22
+ include DefaultScopePatch
19
23
  end
20
24
 
21
25
  self.ignored_columns += ["log_data"]
26
+
27
+ scope :with_log_data, lambda {
28
+ if ignored_columns == ["log_data"]
29
+ select("*")
30
+ else
31
+ select(column_names + ["log_data"])
32
+ end
33
+ }
22
34
  end
23
35
 
24
36
  module ClassMethods # :nodoc:
25
- def with_log_data
26
- select(column_names + ["log_data"])
37
+ def self.default_scope
38
+ ignores_log_data? ? super : super.with_log_data
27
39
  end
28
40
  end
41
+
42
+ def association(name)
43
+ association = super
44
+
45
+ should_load_log_data =
46
+ attributes["log_data"] &&
47
+ association.klass.respond_to?(:has_logidze?) &&
48
+ !association.singleton_class.include?(Logidze::IgnoreLogData::Association)
49
+
50
+ return association unless should_load_log_data
51
+
52
+ association.singleton_class.prepend(Logidze::IgnoreLogData::Association)
53
+
54
+ association
55
+ end
29
56
  end
30
57
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Logidze
4
+ module IgnoreLogData
5
+ module Association # :nodoc:
6
+ def target_scope
7
+ super.with_log_data
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Logidze
4
+ module IgnoreLogData
5
+ # Since Rails caches ignored_columns, we have to patch .column_names and
6
+ # .unscoped methods to make conditional log_data loading possible
7
+ module DefaultScopePatch
8
+ extend ActiveSupport::Concern
9
+
10
+ class_methods do
11
+ def column_names
12
+ ignores_log_data? ? super : super + ["log_data"]
13
+ end
14
+
15
+ def unscoped
16
+ if ignores_log_data?
17
+ super
18
+ else
19
+ block_given? ? with_log_data.scoping { yield } : with_log_data
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -16,7 +16,7 @@ module Logidze
16
16
  private
17
17
 
18
18
  def build_select(arel)
19
- if select_values.blank? && klass.ignored_columns.any?
19
+ if select_values.blank? && klass.ignored_columns.any? && ignores_log_data?
20
20
  arel.project(*arel_columns(klass.column_names - klass.ignored_columns))
21
21
  else
22
22
  super
@@ -7,7 +7,9 @@ module Logidze
7
7
  # from Rails 4 - raise ActiveModel::MissingAttributeError
8
8
  module MissingAttributePatch
9
9
  def log_data
10
- raise ActiveModel::MissingAttributeError if attributes["log_data"].nil?
10
+ if self.class.ignores_log_data? && attributes["log_data"].nil?
11
+ raise ActiveModel::MissingAttributeError
12
+ end
11
13
 
12
14
  super
13
15
  end
data/lib/logidze/meta.rb CHANGED
@@ -10,7 +10,7 @@ module Logidze # :nodoc:
10
10
  def with_responsible(responsible_id, &block)
11
11
  return yield if responsible_id.nil?
12
12
 
13
- meta = { Logidze::History::Version::META_RESPONSIBLE => responsible_id }
13
+ meta = {Logidze::History::Version::META_RESPONSIBLE => responsible_id}
14
14
  with_meta(meta, &block)
15
15
  end
16
16
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Logidze
3
4
  # Contains helpers for handling different PG versions
4
5
  module Migration
data/lib/logidze/model.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require 'active_support'
2
+
3
+ require "active_support"
3
4
 
4
5
  module Logidze
5
6
  module Deprecations # :nodoc:
@@ -12,9 +13,8 @@ module Logidze
12
13
  end
13
14
 
14
15
  # Extends model with methods to browse history
15
- # rubocop: disable Metrics/ModuleLength
16
16
  module Model
17
- require 'logidze/history/type' if Rails::VERSION::MAJOR >= 5
17
+ require "logidze/history/type" if Rails::VERSION::MAJOR >= 5
18
18
 
19
19
  extend ActiveSupport::Concern
20
20
 
@@ -53,6 +53,11 @@ module Logidze
53
53
  true
54
54
  end
55
55
  # rubocop: enable Naming/PredicateName
56
+
57
+ # Nullify log_data column for a association
58
+ def reset_log_data
59
+ without_logging { update_all(log_data: nil) }
60
+ end
56
61
  end
57
62
 
58
63
  # Use this to convert Ruby time to milliseconds
@@ -136,7 +141,7 @@ module Logidze
136
141
 
137
142
  changes.delete_if { |k, _v| deleted_column?(k) }
138
143
 
139
- { "id" => id, "changes" => changes }
144
+ {"id" => id, "changes" => changes}
140
145
  end
141
146
 
142
147
  # Restore record to the previous version.
@@ -204,6 +209,11 @@ module Logidze
204
209
  self.log_data = self.class.where(self.class.primary_key => id).pluck(:log_data).first
205
210
  end
206
211
 
212
+ # Nullify log_data column for a single record
213
+ def reset_log_data
214
+ self.class.without_logging { update_column(:log_data, nil) }
215
+ end
216
+
207
217
  protected
208
218
 
209
219
  def apply_diff(version, diff)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Logidze
3
- VERSION = "0.9.0"
4
+ VERSION = "0.10.0"
4
5
  end
@@ -12,7 +12,6 @@ end
12
12
 
13
13
  module Logidze # :nodoc: all
14
14
  module VersionedAssociation
15
- # rubocop: disable Metrics/MethodLength, Metrics/AbcSize
16
15
  def load_target
17
16
  target = super
18
17
  return unless target
data/logidze.gemspec CHANGED
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
- lib = File.expand_path('../lib', __FILE__)
2
+
3
+ lib = File.expand_path("../lib", __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'logidze/version'
5
+ require "logidze/version"
5
6
 
6
7
  Gem::Specification.new do |spec|
7
8
  spec.name = "logidze"
@@ -17,17 +18,24 @@ Gem::Specification.new do |spec|
17
18
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
19
  spec.require_paths = ["lib"]
19
20
 
21
+ spec.required_ruby_version = ">= 2.4.0"
22
+
23
+ spec.metadata = {
24
+ "bug_tracker_uri" => "http://github.com/palkan/logidze/issues",
25
+ "changelog_uri" => "https://github.com/palkan/logidze/blob/master/CHANGELOG.md",
26
+ "documentation_uri" => "http://github.com/palkan/logidze",
27
+ "homepage_uri" => "http://github.com/palkan/logidze",
28
+ "source_code_uri" => "http://github.com/palkan/logidze"
29
+ }
30
+
20
31
  spec.add_dependency "rails", ">= 4.2"
21
32
 
22
33
  spec.add_development_dependency "ammeter", "~> 1.1.3"
23
- spec.add_development_dependency "bundler", "~> 1"
24
- spec.add_development_dependency "database_cleaner", "~> 1.5"
25
- spec.add_development_dependency "pg", "~>0.18"
26
- spec.add_development_dependency "pry-byebug"
34
+ spec.add_development_dependency "bundler", ">= 1.10"
35
+ spec.add_development_dependency "pg", ">= 0.18"
27
36
  spec.add_development_dependency "rake", ">= 10.0"
28
37
  spec.add_development_dependency "rspec-rails", ">= 3.4"
29
- spec.add_development_dependency "rubocop", "~> 0.60.0"
30
38
  spec.add_development_dependency "rubocop-md", "~> 0.2.0"
31
- spec.add_development_dependency "simplecov", ">= 0.3.8"
39
+ spec.add_development_dependency "standard", "~> 0.0.39"
32
40
  spec.add_development_dependency "timecop", "~> 0.8"
33
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logidze
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-28 00:00:00.000000000 Z
11
+ date: 2019-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -42,58 +42,30 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1'
55
- - !ruby/object:Gem::Dependency
56
- name: database_cleaner
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
45
+ - - ">="
60
46
  - !ruby/object:Gem::Version
61
- version: '1.5'
47
+ version: '1.10'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - "~>"
52
+ - - ">="
67
53
  - !ruby/object:Gem::Version
68
- version: '1.5'
54
+ version: '1.10'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: pg
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.18'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.18'
83
- - !ruby/object:Gem::Dependency
84
- name: pry-byebug
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - ">="
88
60
  - !ruby/object:Gem::Version
89
- version: '0'
61
+ version: '0.18'
90
62
  type: :development
91
63
  prerelease: false
92
64
  version_requirements: !ruby/object:Gem::Requirement
93
65
  requirements:
94
66
  - - ">="
95
67
  - !ruby/object:Gem::Version
96
- version: '0'
68
+ version: '0.18'
97
69
  - !ruby/object:Gem::Dependency
98
70
  name: rake
99
71
  requirement: !ruby/object:Gem::Requirement
@@ -122,20 +94,6 @@ dependencies:
122
94
  - - ">="
123
95
  - !ruby/object:Gem::Version
124
96
  version: '3.4'
125
- - !ruby/object:Gem::Dependency
126
- name: rubocop
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 0.60.0
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 0.60.0
139
97
  - !ruby/object:Gem::Dependency
140
98
  name: rubocop-md
141
99
  requirement: !ruby/object:Gem::Requirement
@@ -151,19 +109,19 @@ dependencies:
151
109
  - !ruby/object:Gem::Version
152
110
  version: 0.2.0
153
111
  - !ruby/object:Gem::Dependency
154
- name: simplecov
112
+ name: standard
155
113
  requirement: !ruby/object:Gem::Requirement
156
114
  requirements:
157
- - - ">="
115
+ - - "~>"
158
116
  - !ruby/object:Gem::Version
159
- version: 0.3.8
117
+ version: 0.0.39
160
118
  type: :development
161
119
  prerelease: false
162
120
  version_requirements: !ruby/object:Gem::Requirement
163
121
  requirements:
164
- - - ">="
122
+ - - "~>"
165
123
  - !ruby/object:Gem::Version
166
- version: 0.3.8
124
+ version: 0.0.39
167
125
  - !ruby/object:Gem::Dependency
168
126
  name: timecop
169
127
  requirement: !ruby/object:Gem::Requirement
@@ -185,8 +143,10 @@ executables: []
185
143
  extensions: []
186
144
  extra_rdoc_files: []
187
145
  files:
146
+ - ".gitattributes"
147
+ - ".github/ISSUE_TEMPLATE.md"
148
+ - ".github/PULL_REQUEST_TEMPLATE.md"
188
149
  - ".gitignore"
189
- - ".hound.yml"
190
150
  - ".rspec"
191
151
  - ".rubocop.yml"
192
152
  - ".travis.yml"
@@ -195,6 +155,7 @@ files:
195
155
  - LICENSE.txt
196
156
  - README.md
197
157
  - Rakefile
158
+ - assets/pg_log_data_chart.png
198
159
  - bench/performance/README.md
199
160
  - bench/performance/diff_bench.rb
200
161
  - bench/performance/insert_bench.rb
@@ -214,6 +175,7 @@ files:
214
175
  - gemfiles/rails42.gemfile
215
176
  - gemfiles/rails5.gemfile
216
177
  - gemfiles/rails52.gemfile
178
+ - gemfiles/rails6.gemfile
217
179
  - gemfiles/railsmaster.gemfile
218
180
  - lib/generators/logidze/install/USAGE
219
181
  - lib/generators/logidze/install/install_generator.rb
@@ -229,7 +191,9 @@ files:
229
191
  - lib/logidze/history/type.rb
230
192
  - lib/logidze/history/version.rb
231
193
  - lib/logidze/ignore_log_data.rb
194
+ - lib/logidze/ignore_log_data/association.rb
232
195
  - lib/logidze/ignore_log_data/cast_attribute_patch.rb
196
+ - lib/logidze/ignore_log_data/default_scope_patch.rb
233
197
  - lib/logidze/ignore_log_data/ignored_columns.rb
234
198
  - lib/logidze/ignore_log_data/missing_attribute_patch.rb
235
199
  - lib/logidze/meta.rb
@@ -241,7 +205,12 @@ files:
241
205
  homepage: http://github.com/palkan/logidze
242
206
  licenses:
243
207
  - MIT
244
- metadata: {}
208
+ metadata:
209
+ bug_tracker_uri: http://github.com/palkan/logidze/issues
210
+ changelog_uri: https://github.com/palkan/logidze/blob/master/CHANGELOG.md
211
+ documentation_uri: http://github.com/palkan/logidze
212
+ homepage_uri: http://github.com/palkan/logidze
213
+ source_code_uri: http://github.com/palkan/logidze
245
214
  post_install_message:
246
215
  rdoc_options: []
247
216
  require_paths:
@@ -250,15 +219,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
250
219
  requirements:
251
220
  - - ">="
252
221
  - !ruby/object:Gem::Version
253
- version: '0'
222
+ version: 2.4.0
254
223
  required_rubygems_version: !ruby/object:Gem::Requirement
255
224
  requirements:
256
225
  - - ">="
257
226
  - !ruby/object:Gem::Version
258
227
  version: '0'
259
228
  requirements: []
260
- rubyforge_project:
261
- rubygems_version: 2.7.7
229
+ rubygems_version: 3.0.3
262
230
  signing_key:
263
231
  specification_version: 4
264
232
  summary: PostgreSQL JSON-based auditing