redis_counters-dumpers 0.0.1 → 0.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
  SHA1:
3
- metadata.gz: 0b52ecd91c02cece254c010ea63a1e67ed32b9e2
4
- data.tar.gz: 24189eaed14d65f10cb264dc6cd01b973c715f68
3
+ metadata.gz: 9be0aa7c67e74438f7bad1434ffb9f606d81d9f2
4
+ data.tar.gz: 93c77edc5d86974e29a26607bc3bf086263b0acd
5
5
  SHA512:
6
- metadata.gz: 46a78d977693f438c9a72b8d018ab3f5e3d36dc51afa0f792b444595c50076881a68351c9172d11a2d1a0fe1f3acfc5b883c190c5496d121b018923c4e497cef
7
- data.tar.gz: 1e3c11304907178fbb9f6d3b6d4955a377b74f8cd9c19dc9bba04028f596c2053e7cc40115f28d9d3651eae4cef50c2ba1f4e92ab6cb4a88d02f2a8d7ea5702d
6
+ metadata.gz: 8e22229c899e2a94b309164023ba10e1d1536037214feb3d5a1ef52cd5b71dcbd585f988bb765f23887f07d5317cb603ee706455c6b585fc90114cd708bfb24e
7
+ data.tar.gz: d9a35017f37676ffa039f0c9c9f24833e390bae5473454a07dc0d4602886bd890438832193b92eed8697357765c71b440e6aa1bf7617116a3d2bac9dc163c0c8
data/.rspec ADDED
@@ -0,0 +1,5 @@
1
+ --color
2
+ --tty
3
+ --format progress
4
+ --order random
5
+ --backtrace
data/Appraisals ADDED
@@ -0,0 +1,19 @@
1
+ appraise 'rails3.1' do
2
+ gem 'activesupport', '~> 3.1.0'
3
+ gem 'activerecord', '~> 3.1.0'
4
+ end
5
+
6
+ appraise 'rails3.2' do
7
+ gem 'activesupport', '~> 3.2.0'
8
+ gem 'activerecord', '~> 3.2.0'
9
+ end
10
+
11
+ appraise 'rails4.0' do
12
+ gem 'activesupport', '~> 4.0.0'
13
+ gem 'activerecord', '~> 4.0.0'
14
+ end
15
+
16
+ appraise 'rails4.1' do
17
+ gem 'activesupport', '~> 4.1.0'
18
+ gem 'activerecord', '~> 4.1.0'
19
+ end
data/Gemfile CHANGED
@@ -1,4 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in redis_counters-dumpers.gemspec
4
+
5
+ group :development, :test do
6
+ gem 'combustion', github: 'pat/combustion', ref: '7d0d24c3f36ce0eb336177fc493be0721bc26665'
7
+ end
8
+
4
9
  gemspec
data/Makefile ADDED
@@ -0,0 +1,28 @@
1
+ RAILS_ENV = test
2
+ BUNDLE = RAILS_ENV=${RAILS_ENV} bundle
3
+ BUNDLE_OPTIONS = -j 2
4
+ RSPEC = rspec
5
+ APPRAISAL = appraisal
6
+
7
+ all: test
8
+
9
+ test: config/database bundler/install appraisal/install
10
+ ${BUNDLE} exec ${APPRAISAL} ${RSPEC} spec 2>&1
11
+
12
+ config/database:
13
+ touch spec/internal/config/database.yml
14
+ echo 'test:' >> spec/internal/config/database.yml
15
+ echo ' adapter: postgresql' >> spec/internal/config/database.yml
16
+ echo ' database: docker' >> spec/internal/config/database.yml
17
+ echo ' username: docker' >> spec/internal/config/database.yml
18
+ echo ' host: localhost' >> spec/internal/config/database.yml
19
+ echo ' min_messages: warning' >> spec/internal/config/database.yml
20
+
21
+ bundler/install:
22
+ if ! gem list bundler -i > /dev/null; then \
23
+ gem install bundler; \
24
+ fi
25
+ ${BUNDLE} install ${BUNDLE_OPTIONS}
26
+
27
+ appraisal/install:
28
+ ${BUNDLE} exec ${APPRAISAL} install
@@ -0,0 +1 @@
1
+ *.gemfile.lock
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 3.1.0"
6
+ gem "activerecord", "~> 3.1.0"
7
+
8
+ group :development, :test do
9
+ gem "combustion", :github => "pat/combustion", :ref => "7d0d24c3f36ce0eb336177fc493be0721bc26665"
10
+ end
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 3.2.0"
6
+ gem "activerecord", "~> 3.2.0"
7
+
8
+ group :development, :test do
9
+ gem "combustion", :github => "pat/combustion", :ref => "7d0d24c3f36ce0eb336177fc493be0721bc26665"
10
+ end
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 4.0.0"
6
+ gem "activerecord", "~> 4.0.0"
7
+
8
+ group :development, :test do
9
+ gem "combustion", :github => "pat/combustion", :ref => "7d0d24c3f36ce0eb336177fc493be0721bc26665"
10
+ end
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 4.1.0"
6
+ gem "activerecord", "~> 4.1.0"
7
+
8
+ group :development, :test do
9
+ gem "combustion", :github => "pat/combustion", :ref => "7d0d24c3f36ce0eb336177fc493be0721bc26665"
10
+ end
11
+
12
+ gemspec :path => "../"
@@ -1,6 +1,7 @@
1
1
  # coding: utf-8
2
2
  require 'forwardable'
3
3
  require 'active_support/core_ext/hash/indifferent_access'
4
+ require 'active_support/core_ext/object/blank'
4
5
  require_relative 'dsl/destination'
5
6
 
6
7
  module RedisCounters
@@ -48,6 +49,9 @@ module RedisCounters
48
49
  # а целевое поле :date, указывает на поле :start_month_date, дампера.
49
50
  attr_accessor :fields_map
50
51
 
52
+ # Список полей по которым будет группироваться таблицы с исходными данным, Array
53
+ attr_accessor :group_by
54
+
51
55
  # Список дополнительных условий, которые применяются при обновлении целевой таблицы, Array of String.
52
56
  # Каждое условие представляет собой строку - часть SQL выражения, которое может включать именованные
53
57
  # параметры из числа доступных в хеше оббщих параметров дампера: engine.common_params.
@@ -68,7 +72,8 @@ module RedisCounters
68
72
  source AS
69
73
  (
70
74
  SELECT #{selected_fields_expression}
71
- FROM #{source_table}
75
+ FROM #{source_table}
76
+ #{group_by_expression}
72
77
  ),
73
78
  updated AS
74
79
  (
@@ -83,11 +88,11 @@ module RedisCounters
83
88
  INSERT INTO #{target_table} (#{target_fields})
84
89
  SELECT #{target_fields}
85
90
  FROM source
86
- WHERE NOT EXISTS (
87
- SELECT 1
91
+ WHERE NOT EXISTS (
92
+ SELECT 1
88
93
  FROM updated target
89
- WHERE #{matching_expression}
90
- #{extra_conditions}
94
+ WHERE #{matching_expression}
95
+ #{extra_conditions}
91
96
  )
92
97
  SQL
93
98
 
@@ -105,6 +110,11 @@ module RedisCounters
105
110
  full_fields_map.map { |target_field, source_field| "#{source_field} as #{target_field}" }.join(', ')
106
111
  end
107
112
 
113
+ def group_by_expression
114
+ return if group_by.blank?
115
+ 'GROUP BY %s' % [group_by.join(', ')]
116
+ end
117
+
108
118
  def full_fields_map
109
119
  fields_map.reverse_merge(Hash[fields.zip(fields)])
110
120
  end
@@ -17,6 +17,7 @@ module RedisCounters
17
17
  varags_setter :fields
18
18
  varags_setter :key_fields
19
19
  varags_setter :increment_fields
20
+ varags_setter :group_by
20
21
 
21
22
  alias_method :take, :fields
22
23
 
@@ -4,6 +4,7 @@ require 'callbacks_rb'
4
4
  require 'active_support/core_ext/hash/indifferent_access'
5
5
  require 'redis'
6
6
  require 'redis/namespace'
7
+ require 'redis_counters'
7
8
  require_relative 'dsl/engine'
8
9
 
9
10
  module RedisCounters
@@ -179,6 +180,8 @@ module RedisCounters
179
180
  destinations.each { |dest| dest.merge }
180
181
 
181
182
  fire_callback(:on_after_merge, self, db_connection)
183
+
184
+ drop_temp_table
182
185
  end
183
186
 
184
187
  def fill_temp_table
@@ -245,6 +248,10 @@ module RedisCounters
245
248
  SQL
246
249
  end
247
250
 
251
+ def drop_temp_table
252
+ db_connection.execute "DROP TABLE #{temp_table_name}"
253
+ end
254
+
248
255
  def analyze_table
249
256
  db_connection.execute <<-SQL
250
257
  ANALYZE #{temp_table_name}
@@ -1,5 +1,5 @@
1
1
  module RedisCounters
2
2
  module Dumpers
3
- VERSION = '0.0.1'
3
+ VERSION = '0.1.0'
4
4
  end
5
5
  end
@@ -1,3 +1,4 @@
1
+ require 'active_record'
1
2
  require 'redis_counters/dumpers/version'
2
3
 
3
4
  module RedisCounters
@@ -19,10 +19,19 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_dependency 'activesupport', '>= 3.0'
21
21
  spec.add_dependency 'activerecord', '>= 3.0'
22
+ spec.add_dependency 'pg'
22
23
  spec.add_dependency 'redis', '>= 3.0'
23
24
  spec.add_dependency 'redis-namespace', '>= 1.3'
24
25
  spec.add_dependency 'callbacks_rb', '>= 0.0.1'
26
+ spec.add_dependency 'redis_counters', '>= 1.3'
27
+
25
28
 
26
29
  spec.add_development_dependency 'bundler', '>= 1.7'
27
30
  spec.add_development_dependency 'rake', '>= 10.0'
31
+ spec.add_development_dependency 'rspec', '>= 3.2'
32
+ spec.add_development_dependency 'rspec-rails', '>= 3.2'
33
+ spec.add_development_dependency 'rspec-given', '>= 3.5'
34
+ spec.add_development_dependency 'appraisal', '>= 1.0.2'
35
+ spec.add_development_dependency 'mock_redis'
36
+ spec.add_development_dependency 'apress-changelogger'
28
37
  end
@@ -0,0 +1,2 @@
1
+ class StatsAggTotal < ActiveRecord::Base
2
+ end
@@ -0,0 +1,2 @@
1
+ class StatsByDay < ActiveRecord::Base
2
+ end
@@ -0,0 +1,2 @@
1
+ class StatsTotal < ActiveRecord::Base
2
+ end
@@ -0,0 +1 @@
1
+ database.yml
@@ -0,0 +1,25 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :stats_by_days do |t|
3
+ t.integer :record_id, null: false
4
+ t.integer :column_id, null: false
5
+ t.date :date, null: false
6
+ t.integer :hits, null: false, default: 0
7
+ end
8
+
9
+ add_index :stats_by_days, [:record_id, :column_id, :date], unique: true
10
+
11
+ create_table :stats_totals do |t|
12
+ t.integer :record_id, null: false
13
+ t.integer :column_id, null: false
14
+ t.integer :hits, null: false, default: 0
15
+ end
16
+
17
+ add_index :stats_totals, [:record_id, :column_id], unique: true
18
+
19
+ create_table :stats_agg_totals do |t|
20
+ t.integer :record_id, null: false
21
+ t.integer :hits, null: false, default: 0
22
+ end
23
+
24
+ add_index :stats_agg_totals, [:record_id], unique: true
25
+ end
@@ -0,0 +1 @@
1
+ *.log
@@ -0,0 +1,97 @@
1
+ require 'spec_helper'
2
+
3
+ describe RedisCounters::Dumpers::Engine do
4
+ let(:dumper) do
5
+ RedisCounters::Dumpers::Engine.build do
6
+ name :stats_totals
7
+ fields record_id: :integer,
8
+ column_id: :integer,
9
+ value: :integer,
10
+ date: :date
11
+
12
+ destination do
13
+ model StatsByDay
14
+ take :record_id, :column_id, :hits, :date
15
+ key_fields :record_id, :column_id, :date
16
+ increment_fields :hits
17
+ map :hits, to: :value
18
+ condition 'target.date = :date'
19
+ end
20
+
21
+ destination do
22
+ model StatsTotal
23
+ take :record_id, :column_id, :hits
24
+ key_fields :record_id, :column_id
25
+ increment_fields :hits
26
+ map :hits, to: :value
27
+ end
28
+
29
+ destination do
30
+ model StatsAggTotal
31
+ take :record_id, :hits
32
+ key_fields :record_id
33
+ increment_fields :hits
34
+ map :hits, to: 'sum(value)'
35
+ group_by :record_id
36
+ end
37
+
38
+ on_before_merge do |dumper, _connection|
39
+ dumper.common_params = {date: dumper.date.strftime('%Y-%m-%d')}
40
+ end
41
+ end
42
+ end
43
+
44
+ let(:prev_date) { Date.new(2015, 1, 19) }
45
+ let(:prev_date_s) { prev_date.strftime('%Y-%m-%d') }
46
+
47
+ let(:date) { Date.new(2015, 1, 20) }
48
+ let(:date_s) { date.strftime('%Y-%m-%d') }
49
+
50
+ let(:counter) do
51
+ RedisCounters.create_counter(Redis.current,
52
+ counter_class: RedisCounters::HashCounter,
53
+ counter_name: :record_hits_by_day,
54
+ group_keys: [:record_id, :column_id],
55
+ partition_keys: [:date]
56
+ )
57
+ end
58
+
59
+ before do
60
+ allow(dumper).to receive(:redis_session).and_return(MockRedis.new)
61
+ end
62
+
63
+ describe '#process!' do
64
+ before do
65
+ counter.increment(date: prev_date_s, record_id: 1, column_id: 100)
66
+ counter.increment(date: prev_date_s, record_id: 1, column_id: 200)
67
+ counter.increment(date: prev_date_s, record_id: 1, column_id: 200)
68
+ counter.increment(date: prev_date_s, record_id: 2, column_id: 100)
69
+
70
+ dumper.process!(counter, prev_date)
71
+
72
+ counter.increment(date: date_s, record_id: 1, column_id: 100)
73
+ counter.increment(date: date_s, record_id: 1, column_id: 200)
74
+ counter.increment(date: date_s, record_id: 1, column_id: 200)
75
+ counter.increment(date: date_s, record_id: 2, column_id: 100)
76
+
77
+ dumper.process!(counter, date)
78
+ end
79
+
80
+ Then { expect(StatsByDay.count).to eq 6 }
81
+ And { expect(StatsByDay.where(record_id: 1, column_id: 100, date: prev_date).first.hits).to eq 1 }
82
+ And { expect(StatsByDay.where(record_id: 1, column_id: 200, date: prev_date).first.hits).to eq 2 }
83
+ And { expect(StatsByDay.where(record_id: 2, column_id: 100, date: prev_date).first.hits).to eq 1 }
84
+ And { expect(StatsByDay.where(record_id: 1, column_id: 100, date: date).first.hits).to eq 1 }
85
+ And { expect(StatsByDay.where(record_id: 1, column_id: 200, date: date).first.hits).to eq 2 }
86
+ And { expect(StatsByDay.where(record_id: 2, column_id: 100, date: date).first.hits).to eq 1 }
87
+
88
+ And { expect(StatsTotal.count).to eq 3 }
89
+ And { expect(StatsTotal.where(record_id: 1, column_id: 100).first.hits).to eq 2 }
90
+ And { expect(StatsTotal.where(record_id: 1, column_id: 200).first.hits).to eq 4 }
91
+ And { expect(StatsTotal.where(record_id: 2, column_id: 100).first.hits).to eq 2 }
92
+
93
+ And { expect(StatsAggTotal.count).to eq 2 }
94
+ And { expect(StatsAggTotal.where(record_id: 1).first.hits).to eq 6 }
95
+ And { expect(StatsAggTotal.where(record_id: 2).first.hits).to eq 2 }
96
+ end
97
+ end
@@ -0,0 +1,18 @@
1
+ # coding: utf-8
2
+ require 'bundler/setup'
3
+ require 'redis_counters/dumpers'
4
+
5
+ require 'combustion'
6
+ Combustion.initialize! :active_record
7
+
8
+ require 'rspec/rails'
9
+ require 'rspec/given'
10
+
11
+ require 'mock_redis'
12
+ require 'redis'
13
+ Redis.current = MockRedis.new
14
+
15
+ RSpec.configure do |config|
16
+ config.use_transactional_fixtures = true
17
+ config.before { Redis.current.flushdb }
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_counters-dumpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Merkushin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-29 00:00:00.000000000 Z
11
+ date: 2015-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  prerelease: false
@@ -38,6 +38,20 @@ dependencies:
38
38
  version: '3.0'
39
39
  type: :runtime
40
40
  name: activerecord
41
+ - !ruby/object:Gem::Dependency
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ type: :runtime
54
+ name: pg
41
55
  - !ruby/object:Gem::Dependency
42
56
  prerelease: false
43
57
  version_requirements: !ruby/object:Gem::Requirement
@@ -80,6 +94,20 @@ dependencies:
80
94
  version: 0.0.1
81
95
  type: :runtime
82
96
  name: callbacks_rb
97
+ - !ruby/object:Gem::Dependency
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '1.3'
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '1.3'
109
+ type: :runtime
110
+ name: redis_counters
83
111
  - !ruby/object:Gem::Dependency
84
112
  prerelease: false
85
113
  version_requirements: !ruby/object:Gem::Requirement
@@ -108,6 +136,90 @@ dependencies:
108
136
  version: '10.0'
109
137
  type: :development
110
138
  name: rake
139
+ - !ruby/object:Gem::Dependency
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '3.2'
146
+ requirement: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '3.2'
151
+ type: :development
152
+ name: rspec
153
+ - !ruby/object:Gem::Dependency
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '3.2'
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '3.2'
165
+ type: :development
166
+ name: rspec-rails
167
+ - !ruby/object:Gem::Dependency
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '3.5'
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - '>='
177
+ - !ruby/object:Gem::Version
178
+ version: '3.5'
179
+ type: :development
180
+ name: rspec-given
181
+ - !ruby/object:Gem::Dependency
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '>='
186
+ - !ruby/object:Gem::Version
187
+ version: 1.0.2
188
+ requirement: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - '>='
191
+ - !ruby/object:Gem::Version
192
+ version: 1.0.2
193
+ type: :development
194
+ name: appraisal
195
+ - !ruby/object:Gem::Dependency
196
+ prerelease: false
197
+ version_requirements: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ requirement: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ type: :development
208
+ name: mock_redis
209
+ - !ruby/object:Gem::Dependency
210
+ prerelease: false
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - '>='
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ type: :development
222
+ name: apress-changelogger
111
223
  description:
112
224
  email:
113
225
  - bibendi@bk.ru
@@ -116,10 +228,18 @@ extensions: []
116
228
  extra_rdoc_files: []
117
229
  files:
118
230
  - .gitignore
231
+ - .rspec
232
+ - Appraisals
119
233
  - Gemfile
120
234
  - LICENSE.txt
235
+ - Makefile
121
236
  - README.md
122
237
  - Rakefile
238
+ - gemfiles/.gitignore
239
+ - gemfiles/rails3.1.gemfile
240
+ - gemfiles/rails3.2.gemfile
241
+ - gemfiles/rails4.0.gemfile
242
+ - gemfiles/rails4.1.gemfile
123
243
  - lib/redis_counters/dumpers.rb
124
244
  - lib/redis_counters/dumpers/destination.rb
125
245
  - lib/redis_counters/dumpers/dsl/base.rb
@@ -130,6 +250,14 @@ files:
130
250
  - lib/redis_counters/dumpers/list.rb
131
251
  - lib/redis_counters/dumpers/version.rb
132
252
  - redis_counters-dumpers.gemspec
253
+ - spec/internal/app/models/stats_agg_total.rb
254
+ - spec/internal/app/models/stats_by_day.rb
255
+ - spec/internal/app/models/stats_total.rb
256
+ - spec/internal/config/.gitignore
257
+ - spec/internal/db/schema.rb
258
+ - spec/internal/log/.gitignore
259
+ - spec/lib/redis_counters/dumpers/engine_spec.rb
260
+ - spec/spec_helper.rb
133
261
  homepage: https://github.com/abak-press/redis_counters-dumpers
134
262
  licenses:
135
263
  - MIT
@@ -154,4 +282,12 @@ rubygems_version: 2.4.2
154
282
  signing_key:
155
283
  specification_version: 4
156
284
  summary: Dump statistics from Redis to DB
157
- test_files: []
285
+ test_files:
286
+ - spec/internal/app/models/stats_agg_total.rb
287
+ - spec/internal/app/models/stats_by_day.rb
288
+ - spec/internal/app/models/stats_total.rb
289
+ - spec/internal/config/.gitignore
290
+ - spec/internal/db/schema.rb
291
+ - spec/internal/log/.gitignore
292
+ - spec/lib/redis_counters/dumpers/engine_spec.rb
293
+ - spec/spec_helper.rb