counter_culture 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|