counter_culture 2.0.0 → 2.0.1

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
- SHA1:
3
- metadata.gz: 626c6d44c921e9bf854359c6f2360683392c8053
4
- data.tar.gz: 171c902ee182fbe717f3fee383b2932bc8e31207
2
+ SHA256:
3
+ metadata.gz: 64eb9b917d27eb10893760ab26afdb228af051a3c2a49524e081b40c857482a0
4
+ data.tar.gz: b27d02bf40278eb9a1c311bd74095838235f551ec83cff595c9c465438d34d05
5
5
  SHA512:
6
- metadata.gz: 34dd015103dc4a1da9c49feeda4009da59662ccfd6dc7d972f7c6c05eb0e4dbd72db452c8dc113dbb50903e854dacd6db112a370890f6572013931742e82b989
7
- data.tar.gz: 84fd5aefae33c42919e10dd91a8eb4b747d564b38994702f7dfdae76c1810fd5a1d910a5be9cbcf260095838902fed8005bcb360f4447c5c143c1a0d7bdbf778
6
+ metadata.gz: 961d64e29863cb4d9e0d6b1a46c1917c4c7bbed7ac42cb9a6cf52d7ad5989f959f35d438379e1353417bb3e98c70dc50aa2a8798e0253771ade979c542900d4a
7
+ data.tar.gz: f79799eb4a5a0dcf1597538dbf2c86ea1fd8804cf096e8848ff7d2839605f30410420abae1c243d1ee4d3f88090e3f2ad457107e45cfaac95f54eaa30977b7b3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 2.0.1 (August 19, 2018)
2
+
3
+ Bugfixes:
4
+ - Properly set timestamps of PaperTrail versions (#224, #225, #226)
5
+
1
6
  ## 2.0.0 (June 12, 2018)
2
7
 
3
8
  Breaking changes:
data/README.md CHANGED
@@ -14,7 +14,7 @@ Tested against Ruby 2.2.5 and 2.3.1 and against the latest patch releases of Rai
14
14
  Add counter_culture to your Gemfile:
15
15
 
16
16
  ```ruby
17
- gem 'counter_culture', '~> 1.8'
17
+ gem 'counter_culture', '~> 2.0'
18
18
  ```
19
19
 
20
20
  Then run `bundle install`
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.0
1
+ 2.0.1
@@ -2,18 +2,18 @@
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: counter_culture 2.0.0 ruby lib
5
+ # stub: counter_culture 2.0.1 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = "counter_culture"
9
- s.version = "2.0.0"
8
+ s.name = "counter_culture".freeze
9
+ s.version = "2.0.1"
10
10
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
- s.authors = ["Magnus von Koeller"]
14
- s.date = "2018-06-18"
15
- s.description = "counter_culture provides turbo-charged counter caches that are kept up-to-date not just on create and destroy, that support multiple levels of indirection through relationships, allow dynamic column names and that avoid deadlocks by updating in the after_commit callback."
16
- s.email = "magnus@vonkoeller.de"
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["Magnus von Koeller".freeze]
14
+ s.date = "2018-08-21"
15
+ s.description = "counter_culture provides turbo-charged counter caches that are kept up-to-date not just on create and destroy, that support multiple levels of indirection through relationships, allow dynamic column names and that avoid deadlocks by updating in the after_commit callback.".freeze
16
+ s.email = "magnus@vonkoeller.de".freeze
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE.txt",
19
19
  "README.md"
@@ -118,60 +118,60 @@ Gem::Specification.new do |s|
118
118
  "spec/spec_helper.rb",
119
119
  "test_rails_versions.sh"
120
120
  ]
121
- s.homepage = "http://github.com/magnusvk/counter_culture"
122
- s.licenses = ["MIT"]
123
- s.rubygems_version = "2.5.1"
124
- s.summary = "Turbo-charged counter caches for your Rails app."
121
+ s.homepage = "http://github.com/magnusvk/counter_culture".freeze
122
+ s.licenses = ["MIT".freeze]
123
+ s.rubygems_version = "2.7.6".freeze
124
+ s.summary = "Turbo-charged counter caches for your Rails app.".freeze
125
125
 
126
126
  if s.respond_to? :specification_version then
127
127
  s.specification_version = 4
128
128
 
129
129
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
130
- s.add_runtime_dependency(%q<after_commit_action>, ["~> 1.0"])
131
- s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0"])
132
- s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0"])
133
- s.add_development_dependency(%q<rake>, [">= 0"])
134
- s.add_development_dependency(%q<rails>, [">= 3.1.0"])
135
- s.add_development_dependency(%q<rspec>, ["~> 3.0"])
136
- s.add_development_dependency(%q<awesome_print>, [">= 0"])
137
- s.add_development_dependency(%q<timecop>, [">= 0"])
138
- s.add_development_dependency(%q<discard>, [">= 0"])
139
- s.add_development_dependency(%q<paranoia>, [">= 0"])
140
- s.add_development_dependency(%q<paper_trail>, [">= 0"])
141
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
142
- s.add_development_dependency(%q<bundler>, [">= 1.2.0"])
143
- s.add_development_dependency(%q<jeweler>, ["~> 2.1"])
130
+ s.add_runtime_dependency(%q<after_commit_action>.freeze, ["~> 1.0"])
131
+ s.add_runtime_dependency(%q<activerecord>.freeze, [">= 3.0.0"])
132
+ s.add_runtime_dependency(%q<activesupport>.freeze, [">= 3.0.0"])
133
+ s.add_development_dependency(%q<rake>.freeze, [">= 0"])
134
+ s.add_development_dependency(%q<rails>.freeze, [">= 3.1.0"])
135
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.0"])
136
+ s.add_development_dependency(%q<awesome_print>.freeze, [">= 0"])
137
+ s.add_development_dependency(%q<timecop>.freeze, [">= 0"])
138
+ s.add_development_dependency(%q<discard>.freeze, [">= 0"])
139
+ s.add_development_dependency(%q<paranoia>.freeze, [">= 0"])
140
+ s.add_development_dependency(%q<paper_trail>.freeze, [">= 0"])
141
+ s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
142
+ s.add_development_dependency(%q<bundler>.freeze, [">= 1.2.0"])
143
+ s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.1"])
144
144
  else
145
- s.add_dependency(%q<after_commit_action>, ["~> 1.0"])
146
- s.add_dependency(%q<activerecord>, [">= 3.0.0"])
147
- s.add_dependency(%q<activesupport>, [">= 3.0.0"])
148
- s.add_dependency(%q<rake>, [">= 0"])
149
- s.add_dependency(%q<rails>, [">= 3.1.0"])
150
- s.add_dependency(%q<rspec>, ["~> 3.0"])
151
- s.add_dependency(%q<awesome_print>, [">= 0"])
152
- s.add_dependency(%q<timecop>, [">= 0"])
153
- s.add_dependency(%q<discard>, [">= 0"])
154
- s.add_dependency(%q<paranoia>, [">= 0"])
155
- s.add_dependency(%q<paper_trail>, [">= 0"])
156
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
157
- s.add_dependency(%q<bundler>, [">= 1.2.0"])
158
- s.add_dependency(%q<jeweler>, ["~> 2.1"])
145
+ s.add_dependency(%q<after_commit_action>.freeze, ["~> 1.0"])
146
+ s.add_dependency(%q<activerecord>.freeze, [">= 3.0.0"])
147
+ s.add_dependency(%q<activesupport>.freeze, [">= 3.0.0"])
148
+ s.add_dependency(%q<rake>.freeze, [">= 0"])
149
+ s.add_dependency(%q<rails>.freeze, [">= 3.1.0"])
150
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.0"])
151
+ s.add_dependency(%q<awesome_print>.freeze, [">= 0"])
152
+ s.add_dependency(%q<timecop>.freeze, [">= 0"])
153
+ s.add_dependency(%q<discard>.freeze, [">= 0"])
154
+ s.add_dependency(%q<paranoia>.freeze, [">= 0"])
155
+ s.add_dependency(%q<paper_trail>.freeze, [">= 0"])
156
+ s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
157
+ s.add_dependency(%q<bundler>.freeze, [">= 1.2.0"])
158
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.1"])
159
159
  end
160
160
  else
161
- s.add_dependency(%q<after_commit_action>, ["~> 1.0"])
162
- s.add_dependency(%q<activerecord>, [">= 3.0.0"])
163
- s.add_dependency(%q<activesupport>, [">= 3.0.0"])
164
- s.add_dependency(%q<rake>, [">= 0"])
165
- s.add_dependency(%q<rails>, [">= 3.1.0"])
166
- s.add_dependency(%q<rspec>, ["~> 3.0"])
167
- s.add_dependency(%q<awesome_print>, [">= 0"])
168
- s.add_dependency(%q<timecop>, [">= 0"])
169
- s.add_dependency(%q<discard>, [">= 0"])
170
- s.add_dependency(%q<paranoia>, [">= 0"])
171
- s.add_dependency(%q<paper_trail>, [">= 0"])
172
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
173
- s.add_dependency(%q<bundler>, [">= 1.2.0"])
174
- s.add_dependency(%q<jeweler>, ["~> 2.1"])
161
+ s.add_dependency(%q<after_commit_action>.freeze, ["~> 1.0"])
162
+ s.add_dependency(%q<activerecord>.freeze, [">= 3.0.0"])
163
+ s.add_dependency(%q<activesupport>.freeze, [">= 3.0.0"])
164
+ s.add_dependency(%q<rake>.freeze, [">= 0"])
165
+ s.add_dependency(%q<rails>.freeze, [">= 3.1.0"])
166
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.0"])
167
+ s.add_dependency(%q<awesome_print>.freeze, [">= 0"])
168
+ s.add_dependency(%q<timecop>.freeze, [">= 0"])
169
+ s.add_dependency(%q<discard>.freeze, [">= 0"])
170
+ s.add_dependency(%q<paranoia>.freeze, [">= 0"])
171
+ s.add_dependency(%q<paper_trail>.freeze, [">= 0"])
172
+ s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
173
+ s.add_dependency(%q<bundler>.freeze, [">= 1.2.0"])
174
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.1"])
175
175
  end
176
176
  end
177
177
 
@@ -74,6 +74,13 @@ module CounterCulture
74
74
  if instance
75
75
  if instance.paper_trail.respond_to?(:save_with_version)
76
76
  # touch_with_version is deprecated starting in PaperTrail 9.0.0
77
+
78
+ current_time = obj.send(:current_time_from_proper_timezone)
79
+ timestamp_columns = obj.send(:timestamp_attributes_for_update_in_model)
80
+ timestamp_columns.each do |timestamp_column|
81
+ instance.send("#{timestamp_column}=", current_time)
82
+ end
83
+
77
84
  instance.paper_trail.save_with_version(validate: false)
78
85
  else
79
86
  instance.paper_trail.touch_with_version
@@ -2015,10 +2015,7 @@ describe "CounterCulture" do
2015
2015
 
2016
2016
  describe "with papertrail support", versioning: true do
2017
2017
  it "creates a papertrail version when changed" do
2018
- if Rails.version < "5.0.0"
2019
- skip("Unsupported in this version of Rails")
2020
- end
2021
- if RUBY_VERSION < "2.3.0" && Rails.version >= "5.2.0"
2018
+ unless papertrail_supported_here?
2022
2019
  skip("Unsupported in this combination of Ruby and Rails")
2023
2020
  end
2024
2021
 
@@ -2051,11 +2048,36 @@ describe "CounterCulture" do
2051
2048
  expect(attrs_from_versions['reviews_count']).to eq(1)
2052
2049
  end
2053
2050
 
2054
- it "does not create a papertrail version when papertrail flag not set" do
2055
- if Rails.version < "5.0.0"
2056
- skip("Unsupported in this version of Rails")
2051
+ context "counter-cache model versioning" do
2052
+ let!(:main_obj) { SimpleMain.create(created_at: 1.day.ago, updated_at: 1.day.ago) }
2053
+
2054
+ it "updates the updated_at of the parent variant" do
2055
+ unless papertrail_supported_here?
2056
+ skip("Unsupported in this combination of Ruby and Rails")
2057
+ end
2058
+
2059
+ the_time = Time.now.utc
2060
+ Timecop.freeze(the_time) do
2061
+ main_obj.simple_dependents.create!
2062
+ expect(main_obj.reload.updated_at.to_i).to eq(the_time.to_i)
2063
+ end
2064
+ end
2065
+
2066
+ it "sets the created_at time of the new version row to the current time" do
2067
+ unless papertrail_supported_here?
2068
+ skip("Unsupported in this combination of Ruby and Rails")
2069
+ end
2070
+
2071
+ the_time = Time.now.utc
2072
+ Timecop.freeze(the_time) do
2073
+ main_obj.simple_dependents.create!
2074
+ expect(main_obj.versions.last.created_at.to_i).to eq(the_time.to_i)
2075
+ end
2057
2076
  end
2058
- if RUBY_VERSION < "2.3.0" && Rails.version >= "5.2.0"
2077
+ end
2078
+
2079
+ it "does not create a papertrail version when papertrail flag not set" do
2080
+ unless papertrail_supported_here?
2059
2081
  skip("Unsupported in this combination of Ruby and Rails")
2060
2082
  end
2061
2083
 
@@ -2073,4 +2095,11 @@ describe "CounterCulture" do
2073
2095
  expect(user.versions.count).to eq(1)
2074
2096
  end
2075
2097
  end
2098
+
2099
+ private
2100
+ def papertrail_supported_here?
2101
+ return false if Rails.version < "5.0.0"
2102
+ return false if RUBY_VERSION < "2.3.0" && Rails.version >= "5.2.0"
2103
+ true
2104
+ end
2076
2105
  end
@@ -1,5 +1,5 @@
1
1
  class SimpleDependent < ActiveRecord::Base
2
2
  belongs_to :simple_main
3
3
 
4
- counter_culture :simple_main
4
+ counter_culture :simple_main, with_papertrail: Rails.version >= '5.0.0'
5
5
  end
@@ -1,3 +1,7 @@
1
1
  class SimpleMain < ActiveRecord::Base
2
2
  has_many :simple_dependents
3
+
4
+ if Rails.version >= "5.0.0"
5
+ has_paper_trail
6
+ end
3
7
  end
@@ -4,4 +4,9 @@
4
4
  # If you change this key, all old signed cookies will become invalid!
5
5
  # Make sure the secret is at least 30 characters and all random,
6
6
  # no regular words or you'll be exposed to dictionary attacks.
7
- RailsApp::Application.config.secret_token = 'fcc06e5fc19cdbf0f0db6fd634aa5160a9f28ad692528f227e14975da33b0dbd92bb8a9f15e0ef44f0664415a0f6eba003cbb088300865f0058965c104e5abd6'
7
+ secret = 'fcc06e5fc19cdbf0f0db6fd634aa5160a9f28ad692528f227e14975da33b0dbd92bb8a9f15e0ef44f0664415a0f6eba003cbb088300865f0058965c104e5abd6'
8
+ if Rails.version < '5.2.0'
9
+ RailsApp::Application.config.secret_token = secret
10
+ else
11
+ RailsApp::Application.config.secret_key_base = secret
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: counter_culture
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Magnus von Koeller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-18 00:00:00.000000000 Z
11
+ date: 2018-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: after_commit_action
@@ -335,7 +335,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
335
335
  version: '0'
336
336
  requirements: []
337
337
  rubyforge_project:
338
- rubygems_version: 2.5.1
338
+ rubygems_version: 2.7.6
339
339
  signing_key:
340
340
  specification_version: 4
341
341
  summary: Turbo-charged counter caches for your Rails app.