redis_counters-dumpers 0.0.1 → 0.1.0

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 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