historiographer 3.1.0 → 3.1.2

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: 193d6326a6d665c589bcf2c67c16434b3cbf6e4bacd1b1d2f28f80d6ce3b229c
4
- data.tar.gz: 1e09d0ecf55bf816d444376fc11cbf00a38a8c9f2a2c6ebbbf62f6a7d173282d
3
+ metadata.gz: 51da7d8b48ed957be4d861ebc29d87cce064268091b882329b256037d0a81174
4
+ data.tar.gz: c8882522095c285fed79be3f1234487fecd7b8329f737f610100d5741a69775b
5
5
  SHA512:
6
- metadata.gz: 32854e876a7a557c8c0c7008b93cfaf33bd5e06748c97f86890cdcfc269b5baef958555ada0c49c551f035b9b655c41a7036debb908347e028554ec1c55ea5fb
7
- data.tar.gz: 3a27716e6159f01260bbb682309d9a82b1bf261cb3ba3eae13f38d8265894a99db938c1473b24a465c63ae24dbf27d0a4d7d66c9a823bf5e16ed0ce6fd8cab6a
6
+ metadata.gz: 2a359fa0aab667e275f08f3b683da62e199413a6f4af26e45ebddcf78b86f10600df8797508bbb68e09a4b3dddbdcb0453af9aee1348cba0c58bee028b6d163e
7
+ data.tar.gz: b7672d46b9765f1b20ee630bd220dcd40712b5768da9a42e0062cdf922639d4c836ee5d4a96cf352c7da249670359ee81f0c8fbbd9d1a0279ebdbda0dc3b9c2f
data/Gemfile CHANGED
@@ -6,6 +6,7 @@ ruby '2.6.3'
6
6
  gem 'activerecord', '>= 6'
7
7
  gem 'activerecord-import'
8
8
  gem 'activesupport'
9
+ gem 'rails', '>= 6'
9
10
  gem 'rollbar'
10
11
 
11
12
  group :development, :test do
data/Gemfile.lock CHANGED
@@ -18,6 +18,25 @@ GIT
18
18
  GEM
19
19
  remote: https://rubygems.org/
20
20
  specs:
21
+ actioncable (6.1.4.4)
22
+ actionpack (= 6.1.4.4)
23
+ activesupport (= 6.1.4.4)
24
+ nio4r (~> 2.0)
25
+ websocket-driver (>= 0.6.1)
26
+ actionmailbox (6.1.4.4)
27
+ actionpack (= 6.1.4.4)
28
+ activejob (= 6.1.4.4)
29
+ activerecord (= 6.1.4.4)
30
+ activestorage (= 6.1.4.4)
31
+ activesupport (= 6.1.4.4)
32
+ mail (>= 2.7.1)
33
+ actionmailer (6.1.4.4)
34
+ actionpack (= 6.1.4.4)
35
+ actionview (= 6.1.4.4)
36
+ activejob (= 6.1.4.4)
37
+ activesupport (= 6.1.4.4)
38
+ mail (~> 2.5, >= 2.5.4)
39
+ rails-dom-testing (~> 2.0)
21
40
  actionpack (6.1.4.4)
22
41
  actionview (= 6.1.4.4)
23
42
  activesupport (= 6.1.4.4)
@@ -25,12 +44,21 @@ GEM
25
44
  rack-test (>= 0.6.3)
26
45
  rails-dom-testing (~> 2.0)
27
46
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
47
+ actiontext (6.1.4.4)
48
+ actionpack (= 6.1.4.4)
49
+ activerecord (= 6.1.4.4)
50
+ activestorage (= 6.1.4.4)
51
+ activesupport (= 6.1.4.4)
52
+ nokogiri (>= 1.8.5)
28
53
  actionview (6.1.4.4)
29
54
  activesupport (= 6.1.4.4)
30
55
  builder (~> 3.1)
31
56
  erubi (~> 1.4)
32
57
  rails-dom-testing (~> 2.0)
33
58
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
59
+ activejob (6.1.4.4)
60
+ activesupport (= 6.1.4.4)
61
+ globalid (>= 0.3.6)
34
62
  activemodel (6.1.4.4)
35
63
  activesupport (= 6.1.4.4)
36
64
  activerecord (6.1.4.4)
@@ -38,6 +66,13 @@ GEM
38
66
  activesupport (= 6.1.4.4)
39
67
  activerecord-import (1.3.0)
40
68
  activerecord (>= 4.2)
69
+ activestorage (6.1.4.4)
70
+ actionpack (= 6.1.4.4)
71
+ activejob (= 6.1.4.4)
72
+ activerecord (= 6.1.4.4)
73
+ activesupport (= 6.1.4.4)
74
+ marcel (~> 1.0.0)
75
+ mini_mime (>= 1.1.0)
41
76
  activesupport (6.1.4.4)
42
77
  concurrent-ruby (~> 1.0, >= 1.0.2)
43
78
  i18n (>= 1.6, < 2)
@@ -78,6 +113,8 @@ GEM
78
113
  hashie (>= 3.4)
79
114
  mime-types (>= 1.16, < 3.0)
80
115
  oauth2 (~> 1.0)
116
+ globalid (1.0.0)
117
+ activesupport (>= 5.0)
81
118
  guard (2.18.0)
82
119
  formatador (>= 0.2.4)
83
120
  listen (>= 2.7, < 4.0)
@@ -105,8 +142,12 @@ GEM
105
142
  crass (~> 1.0.2)
106
143
  nokogiri (>= 1.5.9)
107
144
  lumberjack (1.2.8)
145
+ mail (2.7.1)
146
+ mini_mime (>= 0.1.1)
147
+ marcel (1.0.2)
108
148
  method_source (1.0.0)
109
149
  mime-types (2.99.3)
150
+ mini_mime (1.1.2)
110
151
  mini_portile2 (2.8.0)
111
152
  minitest (5.16.3)
112
153
  multi_json (1.15.0)
@@ -114,6 +155,7 @@ GEM
114
155
  multipart-post (2.2.3)
115
156
  mysql2 (0.5.0)
116
157
  nenv (0.3.0)
158
+ nio4r (2.5.8)
117
159
  nokogiri (1.13.8)
118
160
  mini_portile2 (~> 2.8.0)
119
161
  racc (~> 1.4)
@@ -138,6 +180,21 @@ GEM
138
180
  rack (2.2.4)
139
181
  rack-test (1.1.0)
140
182
  rack (>= 1.0, < 3)
183
+ rails (6.1.4.4)
184
+ actioncable (= 6.1.4.4)
185
+ actionmailbox (= 6.1.4.4)
186
+ actionmailer (= 6.1.4.4)
187
+ actionpack (= 6.1.4.4)
188
+ actiontext (= 6.1.4.4)
189
+ actionview (= 6.1.4.4)
190
+ activejob (= 6.1.4.4)
191
+ activemodel (= 6.1.4.4)
192
+ activerecord (= 6.1.4.4)
193
+ activestorage (= 6.1.4.4)
194
+ activesupport (= 6.1.4.4)
195
+ bundler (>= 1.15.0)
196
+ railties (= 6.1.4.4)
197
+ sprockets-rails (>= 2.0.0)
141
198
  rails-dom-testing (2.0.3)
142
199
  activesupport (>= 4.2.0)
143
200
  nokogiri (>= 1.6)
@@ -178,6 +235,13 @@ GEM
178
235
  simplecov_json_formatter (~> 0.1)
179
236
  simplecov-html (0.12.3)
180
237
  simplecov_json_formatter (0.1.3)
238
+ sprockets (4.1.1)
239
+ concurrent-ruby (~> 1.0)
240
+ rack (> 1, < 3)
241
+ sprockets-rails (3.4.2)
242
+ actionpack (>= 5.2)
243
+ activesupport (>= 5.2)
244
+ sprockets (>= 3.0.0)
181
245
  standalone_migrations (6.1.0)
182
246
  activerecord (>= 4.2.7, < 6.2.0, != 5.2.3.rc1, != 5.2.3)
183
247
  railties (>= 4.2.7, < 6.2.0, != 5.2.3.rc1, != 5.2.3)
@@ -188,6 +252,9 @@ GEM
188
252
  timecop (0.9.4)
189
253
  tzinfo (2.0.5)
190
254
  concurrent-ruby (~> 1.0)
255
+ websocket-driver (0.7.5)
256
+ websocket-extensions (>= 0.1.0)
257
+ websocket-extensions (0.1.5)
191
258
  zeitwerk (2.6.1)
192
259
 
193
260
  PLATFORMS
@@ -207,6 +274,7 @@ DEPENDENCIES
207
274
  paranoia
208
275
  pg
209
276
  pry
277
+ rails (>= 6)
210
278
  rdoc (~> 3.12)
211
279
  rollbar
212
280
  rspec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.0
1
+ 3.1.2
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: historiographer 3.1.0 ruby lib
5
+ # stub: historiographer 3.1.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "historiographer".freeze
9
- s.version = "3.1.0"
9
+ s.version = "3.1.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["brettshollenberger".freeze]
14
- s.date = "2022-10-18"
14
+ s.date = "2022-10-19"
15
15
  s.description = "Creates separate tables for each history table".freeze
16
16
  s.email = "brett.shollenberger@gmail.com".freeze
17
17
  s.extra_rdoc_files = [
@@ -73,6 +73,7 @@ Gem::Specification.new do |s|
73
73
  s.add_runtime_dependency(%q<activerecord>.freeze, [">= 6"])
74
74
  s.add_runtime_dependency(%q<activerecord-import>.freeze, [">= 0"])
75
75
  s.add_runtime_dependency(%q<activesupport>.freeze, [">= 0"])
76
+ s.add_runtime_dependency(%q<rails>.freeze, [">= 6"])
76
77
  s.add_runtime_dependency(%q<rollbar>.freeze, [">= 0"])
77
78
  s.add_development_dependency(%q<mysql2>.freeze, ["= 0.5"])
78
79
  s.add_development_dependency(%q<paranoia>.freeze, [">= 0"])
@@ -88,6 +89,7 @@ Gem::Specification.new do |s|
88
89
  s.add_dependency(%q<activerecord>.freeze, [">= 6"])
89
90
  s.add_dependency(%q<activerecord-import>.freeze, [">= 0"])
90
91
  s.add_dependency(%q<activesupport>.freeze, [">= 0"])
92
+ s.add_dependency(%q<rails>.freeze, [">= 6"])
91
93
  s.add_dependency(%q<rollbar>.freeze, [">= 0"])
92
94
  s.add_dependency(%q<mysql2>.freeze, ["= 0.5"])
93
95
  s.add_dependency(%q<paranoia>.freeze, [">= 0"])
@@ -1,8 +1,11 @@
1
- require "active_support/all"
2
- require_relative "./historiographer/history"
3
- require_relative "./historiographer/postgres_migration"
4
- require_relative "./historiographer/safe"
5
- require_relative "./historiographer/relation"
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/all'
4
+ require_relative './historiographer/history'
5
+ require_relative './historiographer/postgres_migration'
6
+ require_relative './historiographer/safe'
7
+ require_relative './historiographer/relation'
8
+ require_relative './historiographer/silent'
6
9
 
7
10
  # Historiographer takes "histories" (think audits or snapshots) of your model whenever you make changes.
8
11
  #
@@ -74,7 +77,7 @@ module Historiographer
74
77
 
75
78
  class HistoryUserIdMissingError < StandardError; end
76
79
 
77
- UTC = Time.now.in_time_zone("UTC").time_zone
80
+ UTC = Time.now.in_time_zone('UTC').time_zone
78
81
 
79
82
  included do |base|
80
83
  after_save :record_history, if: :should_record_history?
@@ -86,7 +89,7 @@ module Historiographer
86
89
 
87
90
  def validate_history_user_id_present
88
91
  if @no_history.nil? && (!history_user_id.present? || !history_user_id.is_a?(Integer))
89
- errors.add(:history_user_id, "must be an integer")
92
+ errors.add(:history_user_id, 'must be an integer')
90
93
  end
91
94
  end
92
95
 
@@ -95,7 +98,7 @@ module Historiographer
95
98
  def destroy_with_history(history_user_id: nil)
96
99
  history_user_absent_action if history_user_id.nil?
97
100
 
98
- current_history = histories.where(history_ended_at: nil).order("id desc").limit(1).last
101
+ current_history = histories.where(history_ended_at: nil).order('id desc').limit(1).last
99
102
  current_history.update!(history_ended_at: UTC.now) if current_history.present?
100
103
 
101
104
  if respond_to?(:paranoia_destroy)
@@ -138,7 +141,7 @@ module Historiographer
138
141
  when 0..5 then changed? && valid?
139
142
  when 5.1..7 then saved_changes?
140
143
  else
141
- raise "Unsupported Rails version"
144
+ raise 'Unsupported Rails version'
142
145
  end
143
146
  end
144
147
 
@@ -157,7 +160,7 @@ module Historiographer
157
160
 
158
161
  begin
159
162
  class_name.constantize
160
- rescue
163
+ rescue StandardError
161
164
  history_class_initializer = Class.new(ActiveRecord::Base) do
162
165
  end
163
166
 
@@ -170,7 +173,7 @@ module Historiographer
170
173
  raise "#{base} already has histories. Talk to Brett if this is a legit use case."
171
174
  else
172
175
  opts = { class_name: class_name }
173
- opts.merge!(foreign_key: klass.history_foreign_key) if klass.respond_to?(:history_foreign_key)
176
+ opts[:foreign_key] = klass.history_foreign_key if klass.respond_to?(:history_foreign_key)
174
177
  has_many :histories, opts
175
178
  has_one :current_history, -> { current }, opts
176
179
  end
@@ -187,14 +190,12 @@ module Historiographer
187
190
  module UpdateColumnsWithHistory
188
191
  def update_columns(*args)
189
192
  opts = args.extract_options!
190
- any_changes = opts.keys.reject { |k| k == "id" }.any?
193
+ any_changes = opts.keys.reject { |k| k == 'id' }.any?
191
194
 
192
195
  transaction do
193
196
  persisted = super(opts)
194
197
 
195
- if any_changes && persisted
196
- record_history
197
- end
198
+ record_history if any_changes && persisted
198
199
  end
199
200
  end
200
201
  end
@@ -216,7 +217,7 @@ module Historiographer
216
217
  private
217
218
 
218
219
  def history_user_absent_action
219
- raise HistoryUserIdMissingError.new("history_user_id must be passed in order to save record with histories! If you are in a context with no history_user_id, explicitly call #save_without_user")
220
+ raise HistoryUserIdMissingError, 'history_user_id must be passed in order to save record with histories! If you are in a context with no history_user_id, explicitly call #save_without_user'
220
221
  end
221
222
 
222
223
  #
@@ -233,23 +234,22 @@ module Historiographer
233
234
  foreign_key = history_class.history_foreign_key
234
235
 
235
236
  now = UTC.now
236
- attrs.merge!(foreign_key => attrs["id"], history_started_at: now, history_user_id: history_user_id)
237
+ attrs.merge!(foreign_key => attrs['id'], history_started_at: now, history_user_id: history_user_id)
237
238
 
238
- attrs = attrs.except("id")
239
+ attrs = attrs.except('id')
239
240
 
240
- current_history = histories.where(history_ended_at: nil).order("id desc").limit(1).last
241
+ current_history = histories.where(history_ended_at: nil).order('id desc').limit(1).last
241
242
 
242
- unless foreign_key.present? && history_class.present?
243
- raise "Need foreign key and history class to save history!"
244
- else
243
+ if foreign_key.present? && history_class.present?
245
244
  history_class.create!(attrs)
246
245
  current_history.update!(history_ended_at: now) if current_history.present?
246
+ else
247
+ raise 'Need foreign key and history class to save history!'
247
248
  end
248
249
  end
249
250
  end
250
251
 
251
252
  class_methods do
252
-
253
253
  #
254
254
  # E.g. SponsoredProductCampaign => SponsoredProductCampaignHistory
255
255
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: historiographer
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - brettshollenberger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-18 00:00:00.000000000 Z
11
+ date: 2022-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '6'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '6'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rollbar
57
71
  requirement: !ruby/object:Gem::Requirement