counter_culture 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64eb9b917d27eb10893760ab26afdb228af051a3c2a49524e081b40c857482a0
4
- data.tar.gz: b27d02bf40278eb9a1c311bd74095838235f551ec83cff595c9c465438d34d05
3
+ metadata.gz: eddddf9ccad9aca42b6b1cd53149c7bb03d7da3624dc85df00705acbe5f44c02
4
+ data.tar.gz: ba158099b8c8209f390be7e39aa257621e801d211f6c291412b21ca4f1afc56e
5
5
  SHA512:
6
- metadata.gz: 961d64e29863cb4d9e0d6b1a46c1917c4c7bbed7ac42cb9a6cf52d7ad5989f959f35d438379e1353417bb3e98c70dc50aa2a8798e0253771ade979c542900d4a
7
- data.tar.gz: f79799eb4a5a0dcf1597538dbf2c86ea1fd8804cf096e8848ff7d2839605f30410420abae1c243d1ee4d3f88090e3f2ad457107e45cfaac95f54eaa30977b7b3
6
+ metadata.gz: 917106835d1847c50fcba61c064d456a05db40ef12dabb000a4da1a8d508d5837db66234567ca688cd4e83faa75981597aa2c16650301027c78a58fddbd1e198
7
+ data.tar.gz: 9255cd93515ccc1177bccc12e3eadca029bb618cc6e2c0d17b96f44cacaab01222e2e9c4b7f64a5ae36db24ae9b0d94a263b152bdd88c67ba47e348419222902
data/README.md CHANGED
@@ -7,7 +7,7 @@ Turbo-charged counter caches for your Rails app. Huge improvements over the Rail
7
7
  * Supports dynamic column names, making it possible to split up the counter cache for different types of objects
8
8
  * Can keep a running count, or a running total
9
9
 
10
- Tested against Ruby 2.2.5 and 2.3.1 and against the latest patch releases of Rails 3.2, 4.0, 4.1, 4.2, 5.0 and 5.1.
10
+ Tested against Ruby 2.2.10, 2.3.7, 2.4.4 and 2.5.1 and against the latest patch releases of Rails 3.2, 4.0, 4.1, 4.2, 5.0, 5.1 and 5.2.
11
11
 
12
12
  ## Installation
13
13
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.1
1
+ 2.1.0
@@ -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 2.0.1 ruby lib
5
+ # stub: counter_culture 2.1.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "counter_culture".freeze
9
- s.version = "2.0.1"
9
+ s.version = "2.1.0"
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 = ["Magnus von Koeller".freeze]
14
- s.date = "2018-08-21"
14
+ s.date = "2018-10-19"
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.".freeze
16
16
  s.email = "magnus@vonkoeller.de".freeze
17
17
  s.extra_rdoc_files = [
@@ -66,6 +66,8 @@ Gem::Specification.new do |s|
66
66
  "spec/models/transaction.rb",
67
67
  "spec/models/twitter_review.rb",
68
68
  "spec/models/user.rb",
69
+ "spec/models/with_module/model1.rb",
70
+ "spec/models/with_module/model2.rb",
69
71
  "spec/rails_app/.gitignore",
70
72
  "spec/rails_app/Gemfile",
71
73
  "spec/rails_app/README.rdoc",
@@ -13,7 +13,7 @@ module CounterCulture
13
13
  fail("execute_after_commit was removed; updates now run within the transaction")
14
14
  end
15
15
 
16
- @counter_cache_name = options.fetch(:column_name, "#{model.name.tableize}_count")
16
+ @counter_cache_name = options.fetch(:column_name, "#{model.name.demodulize.tableize}_count")
17
17
  @column_names = options[:column_names]
18
18
  @delta_column = options[:delta_column]
19
19
  @foreign_key_values = options[:foreign_key_values]
@@ -26,6 +26,8 @@ require 'models/soft_delete_paranoia'
26
26
  require 'models/conversation'
27
27
  require 'models/candidate_profile'
28
28
  require 'models/candidate'
29
+ require 'models/with_module/model1'
30
+ require 'models/with_module/model2'
29
31
 
30
32
  require 'database_cleaner'
31
33
  DatabaseCleaner.strategy = :deletion
@@ -2096,6 +2098,23 @@ describe "CounterCulture" do
2096
2098
  end
2097
2099
  end
2098
2100
 
2101
+ describe "with a module for the model" do
2102
+ it "works" do
2103
+ model2 = WithModule::Model2.create!
2104
+ 5.times { WithModule::Model1.create!(model2: model2) }
2105
+
2106
+ model2.reload
2107
+ expect(model2.model1s_count).to eq(5)
2108
+
2109
+ model2.update_column(:model1s_count, -1)
2110
+
2111
+ WithModule::Model1.counter_culture_fix_counts
2112
+
2113
+ model2.reload
2114
+ expect(model2.model1s_count).to eq(5)
2115
+ end
2116
+ end
2117
+
2099
2118
  private
2100
2119
  def papertrail_supported_here?
2101
2120
  return false if Rails.version < "5.0.0"
@@ -0,0 +1,8 @@
1
+ module WithModule
2
+ class Model1 < ActiveRecord::Base
3
+ self.table_name_prefix = 'with_module_'
4
+
5
+ belongs_to :model2
6
+ counter_culture :model2
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module WithModule
2
+ class Model2 < ActiveRecord::Base
3
+ self.table_name_prefix = 'with_module_'
4
+
5
+ has_many :model1s
6
+ end
7
+ end
data/spec/schema.rb CHANGED
@@ -230,4 +230,12 @@ ActiveRecord::Schema.define(:version => 20120522160158) do
230
230
  t.datetime :created_at
231
231
  end
232
232
  add_index :versions, [:item_id, :item_type]
233
+
234
+ create_table :with_module_model1s, :force => true do |t|
235
+ t.integer :model2_id
236
+ end
237
+
238
+ create_table :with_module_model2s, :force => true do |t|
239
+ t.integer :model1s_count
240
+ end
233
241
  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.1
4
+ version: 2.1.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: 2018-08-21 00:00:00.000000000 Z
11
+ date: 2018-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: after_commit_action
@@ -264,6 +264,8 @@ files:
264
264
  - spec/models/transaction.rb
265
265
  - spec/models/twitter_review.rb
266
266
  - spec/models/user.rb
267
+ - spec/models/with_module/model1.rb
268
+ - spec/models/with_module/model2.rb
267
269
  - spec/rails_app/.gitignore
268
270
  - spec/rails_app/Gemfile
269
271
  - spec/rails_app/README.rdoc