counter_culture 0.2.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/.travis.yml +3 -3
- data/CHANGELOG.md +5 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +25 -21
- data/README.md +8 -2
- data/VERSION +1 -1
- data/circle.yml +6 -0
- data/counter_culture.gemspec +10 -9
- data/lib/counter_culture/counter.rb +14 -2
- data/spec/rails_app/Gemfile +1 -1
- data/spec/rails_app/Gemfile.lock +107 -81
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff55da448ed08ad68f53c9ae8fee1e814b99315e
|
4
|
+
data.tar.gz: e3f2a61342ab909fabd3a0d0188a288bcbde0879
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ddc79c3684fbbb45d411327ca4c2a28e8b782eecc212b202312b145f43f6e0e200f7b4858edde90b9eb85434ba1dc0ea89eaa2773a26e3e03af24506e440ac6
|
7
|
+
data.tar.gz: 94e34148fead1c2e426b3133a7772da18e37183009b62280e92f3348fc9e980b762fbd3fe14bde0b76b8e2ee529cffd5df229f0e374b08167fb72a5753622aa8
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.4
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 1.0.0 (November 15, 2016)
|
2
|
+
|
3
|
+
Breaking changes:
|
4
|
+
- By default, counter_culture will now update counts inside the same transaction that triggered it. In older versions, counter cache updates happened outside of that transaction. To preserve the old behavior, use the new [`execute_after_commit` option](README.md#executing-counter-cache-updates-after-commit).
|
5
|
+
|
1
6
|
## 0.2.3 (October 18, 2016)
|
2
7
|
|
3
8
|
Improvements:
|
data/Gemfile
CHANGED
@@ -3,7 +3,7 @@ source "https://rubygems.org"
|
|
3
3
|
# Example:
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
5
5
|
|
6
|
-
gem "after_commit_action", "~> 1.0
|
6
|
+
gem "after_commit_action", "~> 1.0"
|
7
7
|
gem "activerecord", ">= 3.0.0"
|
8
8
|
gem "activesupport", ">= 3.0.0"
|
9
9
|
|
@@ -19,7 +19,7 @@ end
|
|
19
19
|
group :development do
|
20
20
|
gem "rdoc", "~> 3.12"
|
21
21
|
gem "bundler", ">= 1.2.0"
|
22
|
-
gem "jeweler", "~> 2.
|
22
|
+
gem "jeweler", "~> 2.1"
|
23
23
|
end
|
24
24
|
|
25
25
|
group :test do
|
data/Gemfile.lock
CHANGED
@@ -36,7 +36,8 @@ GEM
|
|
36
36
|
minitest (~> 5.1)
|
37
37
|
thread_safe (~> 0.3, >= 0.3.4)
|
38
38
|
tzinfo (~> 1.1)
|
39
|
-
addressable (2.
|
39
|
+
addressable (2.5.0)
|
40
|
+
public_suffix (~> 2.0, >= 2.0.2)
|
40
41
|
after_commit_action (1.0.0)
|
41
42
|
activerecord (>= 3.0.0)
|
42
43
|
activesupport (>= 3.0.0)
|
@@ -50,50 +51,52 @@ GEM
|
|
50
51
|
erubis (2.7.0)
|
51
52
|
faraday (0.9.2)
|
52
53
|
multipart-post (>= 1.2, < 3)
|
53
|
-
git (1.
|
54
|
-
github_api (0.
|
54
|
+
git (1.3.0)
|
55
|
+
github_api (0.11.3)
|
55
56
|
addressable (~> 2.3)
|
56
|
-
descendants_tracker (~> 0.0.
|
57
|
+
descendants_tracker (~> 0.0.1)
|
57
58
|
faraday (~> 0.8, < 0.10)
|
58
|
-
hashie (>=
|
59
|
+
hashie (>= 1.2)
|
59
60
|
multi_json (>= 1.7.5, < 2.0)
|
60
|
-
nokogiri (~> 1.6.
|
61
|
+
nokogiri (~> 1.6.0)
|
61
62
|
oauth2
|
62
63
|
globalid (0.3.6)
|
63
64
|
activesupport (>= 4.1.0)
|
64
|
-
hashie (3.4.
|
65
|
+
hashie (3.4.6)
|
65
66
|
highline (1.7.8)
|
66
67
|
i18n (0.7.0)
|
67
|
-
jeweler (2.
|
68
|
+
jeweler (2.1.2)
|
68
69
|
builder
|
69
70
|
bundler (>= 1.0)
|
70
71
|
git (>= 1.2.5)
|
71
|
-
github_api
|
72
|
+
github_api (~> 0.11.0)
|
72
73
|
highline (>= 1.6.15)
|
73
74
|
nokogiri (>= 1.5.10)
|
74
75
|
rake
|
75
76
|
rdoc
|
77
|
+
semver
|
76
78
|
json (1.8.3)
|
77
|
-
jwt (1.5.
|
79
|
+
jwt (1.5.6)
|
78
80
|
loofah (2.0.3)
|
79
81
|
nokogiri (>= 1.5.9)
|
80
82
|
mail (2.6.3)
|
81
83
|
mime-types (>= 1.16, < 3)
|
82
84
|
mime-types (2.6.2)
|
83
|
-
|
85
|
+
mini_portile2 (2.1.0)
|
84
86
|
minitest (5.8.2)
|
85
|
-
multi_json (1.
|
87
|
+
multi_json (1.12.1)
|
86
88
|
multi_xml (0.5.5)
|
87
89
|
multipart-post (2.0.0)
|
88
|
-
nokogiri (1.6.
|
89
|
-
|
90
|
-
oauth2 (1.
|
90
|
+
nokogiri (1.6.8.1)
|
91
|
+
mini_portile2 (~> 2.1.0)
|
92
|
+
oauth2 (1.2.0)
|
91
93
|
faraday (>= 0.8, < 0.10)
|
92
94
|
jwt (~> 1.0)
|
93
95
|
multi_json (~> 1.3)
|
94
96
|
multi_xml (~> 0.5)
|
95
|
-
rack (
|
96
|
-
|
97
|
+
rack (>= 1.2, < 3)
|
98
|
+
public_suffix (2.0.4)
|
99
|
+
rack (1.6.5)
|
97
100
|
rack-test (0.6.3)
|
98
101
|
rack (>= 1.0)
|
99
102
|
rails (4.2.4)
|
@@ -120,7 +123,7 @@ GEM
|
|
120
123
|
activesupport (= 4.2.4)
|
121
124
|
rake (>= 0.8.7)
|
122
125
|
thor (>= 0.18.1, < 2.0)
|
123
|
-
rake (
|
126
|
+
rake (11.3.0)
|
124
127
|
rdoc (3.12.2)
|
125
128
|
json (~> 1.4)
|
126
129
|
rspec (2.10.0)
|
@@ -132,6 +135,7 @@ GEM
|
|
132
135
|
diff-lcs (~> 1.1.3)
|
133
136
|
rspec-extra-formatters (1.0.0)
|
134
137
|
rspec-mocks (2.10.1)
|
138
|
+
semver (1.0.1)
|
135
139
|
sprockets (3.4.0)
|
136
140
|
rack (> 1, < 3)
|
137
141
|
sprockets-rails (2.3.3)
|
@@ -150,11 +154,11 @@ PLATFORMS
|
|
150
154
|
DEPENDENCIES
|
151
155
|
activerecord (>= 3.0.0)
|
152
156
|
activesupport (>= 3.0.0)
|
153
|
-
after_commit_action (~> 1.0
|
157
|
+
after_commit_action (~> 1.0)
|
154
158
|
awesome_print
|
155
159
|
bundler (>= 1.2.0)
|
156
160
|
database_cleaner (>= 1.1.1)
|
157
|
-
jeweler (~> 2.
|
161
|
+
jeweler (~> 2.1)
|
158
162
|
rails (>= 3.1.0)
|
159
163
|
rake
|
160
164
|
rdoc (~> 3.12)
|
@@ -163,4 +167,4 @@ DEPENDENCIES
|
|
163
167
|
sqlite3
|
164
168
|
|
165
169
|
BUNDLED WITH
|
166
|
-
1.
|
170
|
+
1.13.6
|
data/README.md
CHANGED
@@ -5,7 +5,6 @@ Turbo-charged counter caches for your Rails app. Huge improvements over the Rail
|
|
5
5
|
* Updates counter cache when values change, not just when creating and destroying
|
6
6
|
* Supports counter caches through multiple levels of relations
|
7
7
|
* Supports dynamic column names, making it possible to split up the counter cache for different types of objects
|
8
|
-
* Executes counter updates after the commit, avoiding [deadlocks](http://mina.naguib.ca/blog/2010/11/22/postgresql-foreign-key-deadlocks.html)
|
9
8
|
* Can keep a running count, or a running total
|
10
9
|
|
11
10
|
## Installation
|
@@ -13,7 +12,7 @@ Turbo-charged counter caches for your Rails app. Huge improvements over the Rail
|
|
13
12
|
Add counter_culture to your Gemfile:
|
14
13
|
|
15
14
|
```ruby
|
16
|
-
gem 'counter_culture', '~>
|
15
|
+
gem 'counter_culture', '~> 1.0'
|
17
16
|
```
|
18
17
|
|
19
18
|
Then run `bundle install`
|
@@ -206,6 +205,13 @@ By default, counter_culture does not update the timestamp of models when it upda
|
|
206
205
|
|
207
206
|
This can be useful when you use Rails' caching mechanism and display a counter cache's value in the cached fragment.
|
208
207
|
|
208
|
+
### Executing counter cache updates after commit
|
209
|
+
|
210
|
+
By default, counter_culture will run counter cache updates inside of the same ActiveRecord transaction that triggered it. (Note that this bevavior [changed from version 0.2.3 to 1.0.0](CHANGELOG.md#100-november-15-2016).) If you would like to run counter cache updates outside of that transaction, for example because you are experiencing [deadlocks with older versions of PostgreSQL](http://mina.naguib.ca/blog/2010/11/22/postgresql-foreign-key-deadlocks.html), you can enable that behavior:
|
211
|
+
```ruby
|
212
|
+
counter_culture :category, :execute_after_commit => true
|
213
|
+
```
|
214
|
+
|
209
215
|
### Manually populating counter cache values
|
210
216
|
|
211
217
|
You will sometimes want to populate counter-cache values from primary data. This is required when adding counter-caches to existing data. It is also recommended to run this regularly (at BestVendor, we run it once a week) to catch any incorrect values in the counter caches.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
data/circle.yml
CHANGED
data/counter_culture.gemspec
CHANGED
@@ -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: counter_culture 0.
|
5
|
+
# stub: counter_culture 1.0.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "counter_culture"
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "1.0.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Magnus von Koeller"]
|
14
|
-
s.date = "2016-
|
14
|
+
s.date = "2016-11-15"
|
15
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
16
|
s.email = "magnus@vonkoeller.de"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.files = [
|
23
23
|
".document",
|
24
24
|
".rspec",
|
25
|
+
".ruby-version",
|
25
26
|
".travis.yml",
|
26
27
|
"CHANGELOG.md",
|
27
28
|
"Gemfile",
|
@@ -118,7 +119,7 @@ Gem::Specification.new do |s|
|
|
118
119
|
s.specification_version = 4
|
119
120
|
|
120
121
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
121
|
-
s.add_runtime_dependency(%q<after_commit_action>, ["~> 1.0
|
122
|
+
s.add_runtime_dependency(%q<after_commit_action>, ["~> 1.0"])
|
122
123
|
s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0"])
|
123
124
|
s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0"])
|
124
125
|
s.add_development_dependency(%q<rake>, [">= 0"])
|
@@ -127,9 +128,9 @@ Gem::Specification.new do |s|
|
|
127
128
|
s.add_development_dependency(%q<awesome_print>, [">= 0"])
|
128
129
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
129
130
|
s.add_development_dependency(%q<bundler>, [">= 1.2.0"])
|
130
|
-
s.add_development_dependency(%q<jeweler>, ["~> 2.
|
131
|
+
s.add_development_dependency(%q<jeweler>, ["~> 2.1"])
|
131
132
|
else
|
132
|
-
s.add_dependency(%q<after_commit_action>, ["~> 1.0
|
133
|
+
s.add_dependency(%q<after_commit_action>, ["~> 1.0"])
|
133
134
|
s.add_dependency(%q<activerecord>, [">= 3.0.0"])
|
134
135
|
s.add_dependency(%q<activesupport>, [">= 3.0.0"])
|
135
136
|
s.add_dependency(%q<rake>, [">= 0"])
|
@@ -138,10 +139,10 @@ Gem::Specification.new do |s|
|
|
138
139
|
s.add_dependency(%q<awesome_print>, [">= 0"])
|
139
140
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
140
141
|
s.add_dependency(%q<bundler>, [">= 1.2.0"])
|
141
|
-
s.add_dependency(%q<jeweler>, ["~> 2.
|
142
|
+
s.add_dependency(%q<jeweler>, ["~> 2.1"])
|
142
143
|
end
|
143
144
|
else
|
144
|
-
s.add_dependency(%q<after_commit_action>, ["~> 1.0
|
145
|
+
s.add_dependency(%q<after_commit_action>, ["~> 1.0"])
|
145
146
|
s.add_dependency(%q<activerecord>, [">= 3.0.0"])
|
146
147
|
s.add_dependency(%q<activesupport>, [">= 3.0.0"])
|
147
148
|
s.add_dependency(%q<rake>, [">= 0"])
|
@@ -150,7 +151,7 @@ Gem::Specification.new do |s|
|
|
150
151
|
s.add_dependency(%q<awesome_print>, [">= 0"])
|
151
152
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
152
153
|
s.add_dependency(%q<bundler>, [">= 1.2.0"])
|
153
|
-
s.add_dependency(%q<jeweler>, ["~> 2.
|
154
|
+
s.add_dependency(%q<jeweler>, ["~> 2.1"])
|
154
155
|
end
|
155
156
|
end
|
156
157
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module CounterCulture
|
2
2
|
class Counter
|
3
|
-
CONFIG_OPTIONS = [ :column_names, :counter_cache_name, :delta_column, :foreign_key_values, :touch, :delta_magnitude ]
|
3
|
+
CONFIG_OPTIONS = [ :column_names, :counter_cache_name, :delta_column, :foreign_key_values, :touch, :delta_magnitude, :execute_after_commit ]
|
4
4
|
|
5
5
|
attr_reader :model, :relation, *CONFIG_OPTIONS
|
6
6
|
|
@@ -14,6 +14,7 @@ module CounterCulture
|
|
14
14
|
@foreign_key_values = options[:foreign_key_values]
|
15
15
|
@touch = options.fetch(:touch, false)
|
16
16
|
@delta_magnitude = options[:delta_magnitude] || 1
|
17
|
+
@execute_after_commit = options.fetch(:execute_after_commit, false)
|
17
18
|
end
|
18
19
|
|
19
20
|
# increments or decrements a counter cache
|
@@ -26,6 +27,7 @@ module CounterCulture
|
|
26
27
|
# :delta_column => override the default count delta (1) with the value of this column in the counted record
|
27
28
|
# :was => whether to get the current value or the old value of the
|
28
29
|
# first part of the relation
|
30
|
+
# :execute_after_commit => execute the column update outside of the transaction to avoid deadlocks
|
29
31
|
def change_counter_cache(obj, options)
|
30
32
|
change_counter_column = options.fetch(:counter_column) { counter_cache_name_for(obj) }
|
31
33
|
|
@@ -41,7 +43,7 @@ module CounterCulture
|
|
41
43
|
else
|
42
44
|
counter_delta_magnitude_for(obj)
|
43
45
|
end
|
44
|
-
obj
|
46
|
+
execute_change_counter_cache(obj, options) do
|
45
47
|
# increment or decrement?
|
46
48
|
operator = options[:increment] ? '+' : '-'
|
47
49
|
|
@@ -183,5 +185,15 @@ module CounterCulture
|
|
183
185
|
|
184
186
|
prev
|
185
187
|
end
|
188
|
+
|
189
|
+
private
|
190
|
+
|
191
|
+
def execute_change_counter_cache(obj, options)
|
192
|
+
if execute_after_commit
|
193
|
+
obj.execute_after_commit { yield }
|
194
|
+
else
|
195
|
+
yield
|
196
|
+
end
|
197
|
+
end
|
186
198
|
end
|
187
199
|
end
|
data/spec/rails_app/Gemfile
CHANGED
data/spec/rails_app/Gemfile.lock
CHANGED
@@ -1,110 +1,133 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../..
|
3
3
|
specs:
|
4
|
-
counter_culture (0.
|
5
|
-
|
4
|
+
counter_culture (0.2.3)
|
5
|
+
activerecord (>= 3.0.0)
|
6
|
+
activesupport (>= 3.0.0)
|
7
|
+
after_commit_action (~> 1.0.0)
|
6
8
|
|
7
9
|
GEM
|
8
10
|
remote: https://rubygems.org/
|
9
11
|
specs:
|
10
|
-
actionmailer (4.
|
11
|
-
actionpack (= 4.
|
12
|
-
actionview (= 4.
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
actionmailer (4.2.7.1)
|
13
|
+
actionpack (= 4.2.7.1)
|
14
|
+
actionview (= 4.2.7.1)
|
15
|
+
activejob (= 4.2.7.1)
|
16
|
+
mail (~> 2.5, >= 2.5.4)
|
17
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
18
|
+
actionpack (4.2.7.1)
|
19
|
+
actionview (= 4.2.7.1)
|
20
|
+
activesupport (= 4.2.7.1)
|
21
|
+
rack (~> 1.6)
|
18
22
|
rack-test (~> 0.6.2)
|
19
|
-
|
20
|
-
|
23
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
24
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
25
|
+
actionview (4.2.7.1)
|
26
|
+
activesupport (= 4.2.7.1)
|
21
27
|
builder (~> 3.1)
|
22
28
|
erubis (~> 2.7.0)
|
23
|
-
|
24
|
-
|
29
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
30
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
31
|
+
activejob (4.2.7.1)
|
32
|
+
activesupport (= 4.2.7.1)
|
33
|
+
globalid (>= 0.3.0)
|
34
|
+
activemodel (4.2.7.1)
|
35
|
+
activesupport (= 4.2.7.1)
|
25
36
|
builder (~> 3.1)
|
26
|
-
activerecord (4.
|
27
|
-
activemodel (= 4.
|
28
|
-
activesupport (= 4.
|
29
|
-
arel (~>
|
30
|
-
activesupport (4.
|
31
|
-
i18n (~> 0.
|
37
|
+
activerecord (4.2.7.1)
|
38
|
+
activemodel (= 4.2.7.1)
|
39
|
+
activesupport (= 4.2.7.1)
|
40
|
+
arel (~> 6.0)
|
41
|
+
activesupport (4.2.7.1)
|
42
|
+
i18n (~> 0.7)
|
32
43
|
json (~> 1.7, >= 1.7.7)
|
33
44
|
minitest (~> 5.1)
|
34
|
-
thread_safe (~> 0.
|
45
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
35
46
|
tzinfo (~> 1.1)
|
36
|
-
after_commit_action (0.1
|
47
|
+
after_commit_action (1.0.1)
|
37
48
|
activerecord (>= 3.0.0)
|
38
|
-
|
49
|
+
activesupport (>= 3.0.0)
|
50
|
+
arel (6.0.3)
|
39
51
|
builder (3.2.2)
|
40
|
-
coffee-rails (4.
|
52
|
+
coffee-rails (4.2.1)
|
41
53
|
coffee-script (>= 2.2.0)
|
42
|
-
railties (>= 4.0.0, < 5.
|
43
|
-
coffee-script (2.
|
54
|
+
railties (>= 4.0.0, < 5.2.x)
|
55
|
+
coffee-script (2.4.1)
|
44
56
|
coffee-script-source
|
45
57
|
execjs
|
46
|
-
coffee-script-source (1.
|
58
|
+
coffee-script-source (1.10.0)
|
59
|
+
concurrent-ruby (1.0.2)
|
47
60
|
erubis (2.7.0)
|
48
|
-
execjs (2.0
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
61
|
+
execjs (2.7.0)
|
62
|
+
globalid (0.3.7)
|
63
|
+
activesupport (>= 4.1.0)
|
64
|
+
i18n (0.7.0)
|
65
|
+
jquery-rails (4.2.1)
|
66
|
+
rails-dom-testing (>= 1, < 3)
|
67
|
+
railties (>= 4.2.0)
|
53
68
|
thor (>= 0.14, < 2.0)
|
54
|
-
json (1.8.
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
69
|
+
json (1.8.3)
|
70
|
+
loofah (2.0.3)
|
71
|
+
nokogiri (>= 1.5.9)
|
72
|
+
mail (2.6.4)
|
73
|
+
mime-types (>= 1.16, < 4)
|
74
|
+
mime-types (3.1)
|
75
|
+
mime-types-data (~> 3.2015)
|
76
|
+
mime-types-data (3.2016.0521)
|
77
|
+
mini_portile2 (2.1.0)
|
78
|
+
minitest (5.9.1)
|
79
|
+
nokogiri (1.6.8.1)
|
80
|
+
mini_portile2 (~> 2.1.0)
|
81
|
+
rack (1.6.5)
|
82
|
+
rack-test (0.6.3)
|
64
83
|
rack (>= 1.0)
|
65
|
-
rails (4.
|
66
|
-
actionmailer (= 4.
|
67
|
-
actionpack (= 4.
|
68
|
-
actionview (= 4.
|
69
|
-
|
70
|
-
|
71
|
-
|
84
|
+
rails (4.2.7.1)
|
85
|
+
actionmailer (= 4.2.7.1)
|
86
|
+
actionpack (= 4.2.7.1)
|
87
|
+
actionview (= 4.2.7.1)
|
88
|
+
activejob (= 4.2.7.1)
|
89
|
+
activemodel (= 4.2.7.1)
|
90
|
+
activerecord (= 4.2.7.1)
|
91
|
+
activesupport (= 4.2.7.1)
|
72
92
|
bundler (>= 1.3.0, < 2.0)
|
73
|
-
railties (= 4.
|
74
|
-
sprockets-rails
|
75
|
-
|
76
|
-
|
77
|
-
|
93
|
+
railties (= 4.2.7.1)
|
94
|
+
sprockets-rails
|
95
|
+
rails-deprecated_sanitizer (1.0.3)
|
96
|
+
activesupport (>= 4.2.0.alpha)
|
97
|
+
rails-dom-testing (1.0.7)
|
98
|
+
activesupport (>= 4.2.0.beta, < 5.0)
|
99
|
+
nokogiri (~> 1.6.0)
|
100
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
101
|
+
rails-html-sanitizer (1.0.3)
|
102
|
+
loofah (~> 2.0)
|
103
|
+
railties (4.2.7.1)
|
104
|
+
actionpack (= 4.2.7.1)
|
105
|
+
activesupport (= 4.2.7.1)
|
78
106
|
rake (>= 0.8.7)
|
79
107
|
thor (>= 0.18.1, < 2.0)
|
80
|
-
rake (
|
81
|
-
sass (3.
|
82
|
-
sass-rails (
|
83
|
-
railties (>= 4.0.0, <
|
84
|
-
sass (~> 3.
|
85
|
-
sprockets (
|
86
|
-
sprockets-rails (
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
rack (
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
sqlite3 (1.3.9)
|
108
|
+
rake (11.3.0)
|
109
|
+
sass (3.4.22)
|
110
|
+
sass-rails (5.0.6)
|
111
|
+
railties (>= 4.0.0, < 6)
|
112
|
+
sass (~> 3.1)
|
113
|
+
sprockets (>= 2.8, < 4.0)
|
114
|
+
sprockets-rails (>= 2.0, < 4.0)
|
115
|
+
tilt (>= 1.1, < 3)
|
116
|
+
sprockets (3.7.0)
|
117
|
+
concurrent-ruby (~> 1.0)
|
118
|
+
rack (> 1, < 3)
|
119
|
+
sprockets-rails (3.2.0)
|
120
|
+
actionpack (>= 4.0)
|
121
|
+
activesupport (>= 4.0)
|
122
|
+
sprockets (>= 3.0.0)
|
123
|
+
sqlite3 (1.3.12)
|
97
124
|
thor (0.19.1)
|
98
|
-
thread_safe (0.3.
|
99
|
-
tilt (
|
100
|
-
|
101
|
-
polyglot
|
102
|
-
polyglot (>= 0.3.1)
|
103
|
-
tzinfo (1.1.0)
|
125
|
+
thread_safe (0.3.5)
|
126
|
+
tilt (2.0.5)
|
127
|
+
tzinfo (1.2.2)
|
104
128
|
thread_safe (~> 0.1)
|
105
|
-
uglifier (
|
106
|
-
execjs (>= 0.3.0)
|
107
|
-
json (>= 1.8.0)
|
129
|
+
uglifier (3.0.3)
|
130
|
+
execjs (>= 0.3.0, < 3)
|
108
131
|
|
109
132
|
PLATFORMS
|
110
133
|
ruby
|
@@ -113,7 +136,10 @@ DEPENDENCIES
|
|
113
136
|
coffee-rails
|
114
137
|
counter_culture!
|
115
138
|
jquery-rails
|
116
|
-
rails (~> 4.
|
139
|
+
rails (~> 4.2.0)
|
117
140
|
sass-rails
|
118
141
|
sqlite3
|
119
142
|
uglifier
|
143
|
+
|
144
|
+
BUNDLED WITH
|
145
|
+
1.13.6
|
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: 0.
|
4
|
+
version: 1.0.0
|
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: 2016-
|
11
|
+
date: 2016-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: after_commit_action
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activerecord
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +142,14 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 2.
|
145
|
+
version: '2.1'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 2.
|
152
|
+
version: '2.1'
|
153
153
|
description: counter_culture provides turbo-charged counter caches that are kept up-to-date
|
154
154
|
not just on create and destroy, that support multiple levels of indirection through
|
155
155
|
relationships, allow dynamic column names and that avoid deadlocks by updating in
|
@@ -164,6 +164,7 @@ extra_rdoc_files:
|
|
164
164
|
files:
|
165
165
|
- ".document"
|
166
166
|
- ".rspec"
|
167
|
+
- ".ruby-version"
|
167
168
|
- ".travis.yml"
|
168
169
|
- CHANGELOG.md
|
169
170
|
- Gemfile
|