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 +5 -5
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/VERSION +1 -1
- data/counter_culture.gemspec +55 -55
- data/lib/counter_culture/counter.rb +7 -0
- data/spec/counter_culture_spec.rb +37 -8
- data/spec/models/simple_dependent.rb +1 -1
- data/spec/models/simple_main.rb +4 -0
- data/spec/rails_app/config/initializers/secret_token.rb +6 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 64eb9b917d27eb10893760ab26afdb228af051a3c2a49524e081b40c857482a0
|
|
4
|
+
data.tar.gz: b27d02bf40278eb9a1c311bd74095838235f551ec83cff595c9c465438d34d05
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 961d64e29863cb4d9e0d6b1a46c1917c4c7bbed7ac42cb9a6cf52d7ad5989f959f35d438379e1353417bb3e98c70dc50aa2a8798e0253771ade979c542900d4a
|
|
7
|
+
data.tar.gz: f79799eb4a5a0dcf1597538dbf2c86ea1fd8804cf096e8848ff7d2839605f30410420abae1c243d1ee4d3f88090e3f2ad457107e45cfaac95f54eaa30977b7b3
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.0.
|
|
1
|
+
2.0.1
|
data/counter_culture.gemspec
CHANGED
|
@@ -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.
|
|
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.
|
|
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-
|
|
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.
|
|
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
|
|
131
|
-
s.add_runtime_dependency(%q<activerecord
|
|
132
|
-
s.add_runtime_dependency(%q<activesupport
|
|
133
|
-
s.add_development_dependency(%q<rake
|
|
134
|
-
s.add_development_dependency(%q<rails
|
|
135
|
-
s.add_development_dependency(%q<rspec
|
|
136
|
-
s.add_development_dependency(%q<awesome_print
|
|
137
|
-
s.add_development_dependency(%q<timecop
|
|
138
|
-
s.add_development_dependency(%q<discard
|
|
139
|
-
s.add_development_dependency(%q<paranoia
|
|
140
|
-
s.add_development_dependency(%q<paper_trail
|
|
141
|
-
s.add_development_dependency(%q<rdoc
|
|
142
|
-
s.add_development_dependency(%q<bundler
|
|
143
|
-
s.add_development_dependency(%q<jeweler
|
|
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
|
|
146
|
-
s.add_dependency(%q<activerecord
|
|
147
|
-
s.add_dependency(%q<activesupport
|
|
148
|
-
s.add_dependency(%q<rake
|
|
149
|
-
s.add_dependency(%q<rails
|
|
150
|
-
s.add_dependency(%q<rspec
|
|
151
|
-
s.add_dependency(%q<awesome_print
|
|
152
|
-
s.add_dependency(%q<timecop
|
|
153
|
-
s.add_dependency(%q<discard
|
|
154
|
-
s.add_dependency(%q<paranoia
|
|
155
|
-
s.add_dependency(%q<paper_trail
|
|
156
|
-
s.add_dependency(%q<rdoc
|
|
157
|
-
s.add_dependency(%q<bundler
|
|
158
|
-
s.add_dependency(%q<jeweler
|
|
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
|
|
162
|
-
s.add_dependency(%q<activerecord
|
|
163
|
-
s.add_dependency(%q<activesupport
|
|
164
|
-
s.add_dependency(%q<rake
|
|
165
|
-
s.add_dependency(%q<rails
|
|
166
|
-
s.add_dependency(%q<rspec
|
|
167
|
-
s.add_dependency(%q<awesome_print
|
|
168
|
-
s.add_dependency(%q<timecop
|
|
169
|
-
s.add_dependency(%q<discard
|
|
170
|
-
s.add_dependency(%q<paranoia
|
|
171
|
-
s.add_dependency(%q<paper_trail
|
|
172
|
-
s.add_dependency(%q<rdoc
|
|
173
|
-
s.add_dependency(%q<bundler
|
|
174
|
-
s.add_dependency(%q<jeweler
|
|
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
|
-
|
|
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
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
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
|
-
|
|
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
|
data/spec/models/simple_main.rb
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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-
|
|
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.
|
|
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.
|