ar_aggregate_by_interval 1.1.5 → 1.1.6

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: 1c298fefa29a3f10b604344514cbdb4107f3ae14
4
- data.tar.gz: 25ac0e6e1bc2aec6002ead9f3ed97d45cab933ab
3
+ metadata.gz: 60d194e4f1346228225b37d2c176e1699da97d01
4
+ data.tar.gz: 82aead17f908b020f50909b1589cc9a500233dfa
5
5
  SHA512:
6
- metadata.gz: 2e101fa39c200ca502387d95b63c3dae825e25273c57ab04bb5ca05a32b2cd3932f6e6fea0cbf21d3754aec4449e77cd09a9dfe245b16d803269cf12012485f0
7
- data.tar.gz: d99af5d4a6cd05e067c933e66a2fd9fc88613b933d8511a4a44557e4a46b3a16579c82b44a63564c3db1b8286ba58ba3288531c83532915cbf80691e4ea7a0ad
6
+ metadata.gz: 123c5a51bb2c75d8a60628b20d46dae8b28e3c0b52ef62ae504cf3c4038a6f600ebe98c79ad337fcd0799e83b8e066c346148e75bb2c5ef64272720a6f9f523f
7
+ data.tar.gz: 13c5c11f9575481558e9d97e0dabbf320a45ed44efa43e512b68f899257b96efc3a7166ac5aa54b3ef8789aaa5e7eba79ed6793314bc84a6b32b32347bad46bd
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .DS_Store
data/CHANGELOG.md CHANGED
@@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
  This file adheres to [Keep a changelog](http://keepachangelog.com/).
5
5
 
6
+ ## [1.1.6] - 2015-03-15 (maintenance)
7
+ ### Added
8
+ - Tests run on MySQL, Postgres and SQLite
9
+
10
+ ### Changed
11
+ - Remove memoization from Utils
12
+
6
13
  ## [1.1.5] - 2015-03-08 (maintenance)
7
14
  ### Changed
8
15
  - Raise ArgumentError instead of NoMethodError or RuntimeError on bad args
data/README.md CHANGED
@@ -1,13 +1,23 @@
1
- # ArAggregateByInterval
1
+ # ArAggregateByInterval (Time series)
2
2
  ---
3
3
 
4
4
  [![Circle CI](https://circleci.com/gh/jotto/ar_aggregate_by_interval.svg?style=svg)](https://circleci.com/gh/jotto/ar_aggregate_by_interval)
5
5
 
6
+ For MySQL or Postgres.
7
+
6
8
  Build arrays of counts, sums and averages from Ruby on Rails ActiveRecord models grouped by days, weeks or months. e.g.:
7
9
  ```ruby
8
- # default 'group by' is 'created_at'
9
- Blog.count_weekly(1.month.ago).values
10
+ # (group_by_col, from, to = Time.now)
11
+ Blog.count_weekly(:created_at, 1.month.ago).values
10
12
  => [4, 2, 2, 0]
13
+
14
+ # (group_by_col, aggregate_col, from, to = Time.now)
15
+ Blog.sum_weekly(:created_at, :pageviews, 1.month.ago).values
16
+ => [400, 350, 375, 250]
17
+
18
+ # (group_by_col, aggregate_col, from, to = Time.now)
19
+ Blog.avg_weekly(:created_at, :pageviews, 1.month.ago).values
20
+ => [25, 20, 40, 10]
11
21
  ```
12
22
 
13
23
  ## Why?
@@ -16,7 +26,13 @@ Blog.count_weekly(1.month.ago).values
16
26
 
17
27
  ## Usage
18
28
  ```ruby
19
- ActiveRecordModel.{sum,count,avg}_{daily,weekly,monthly}(arg_hash).{values,values_and_dates}
29
+ # be explicit and pass a hash
30
+ # [:group_by_column, :from, :to, :aggregate_column]
31
+
32
+ # or just pass arguments
33
+ # count: arg_hash can be arguments: (group_by_col, from, to)
34
+ # sum and avg: arg_hash can be arguments: (group_by_col, aggregate_col, from, to)
35
+ Blog.{count,sum,avg}_{daily,weekly,monthly}(arg_hash).{values,values_and_dates}
20
36
  ```
21
37
 
22
38
  ```ruby
@@ -19,9 +19,11 @@ Gem::Specification.new do |s|
19
19
 
20
20
  s.add_development_dependency 'bundler', '~> 1.5'
21
21
  s.add_development_dependency 'rake'
22
- s.add_development_dependency 'database_cleaner', '~> 1.4'
23
22
  s.add_development_dependency 'guard-rspec', '~> 4.5'
23
+ s.add_development_dependency 'mysql2'
24
+ s.add_development_dependency 'pg'
24
25
  s.add_development_dependency 'sqlite3'
26
+ s.add_development_dependency 'rails', '~> 4.2' # for database tasks
25
27
  s.add_dependency 'activesupport', '~> 4.0'
26
28
  s.add_dependency 'activerecord', '~> 4.0'
27
29
  s.add_dependency 'classy_hash', '~> 0.1'
data/helpers.rb ADDED
@@ -0,0 +1,40 @@
1
+ ActiveRecord::Base.establish_connection adapter: 'mysql2', database: 'stocks'
2
+ class Quote < ActiveRecord::Base
3
+ end
4
+
5
+
6
+
7
+ ActiveRecord::Base.establish_connection adapter: 'postgresql', database: 'traianbasecu'
8
+ class Click < ActiveRecord::Base
9
+ end
10
+ r=Click.count_daily(:created_at, 3.month.ago).values_and_dates.collect{|z|z[:date]}
11
+
12
+
13
+
14
+
15
+
16
+
17
+ r=Click.count_weekly(:created_at, 3.month.ago).instance_variable_get('@wut').to_a.first.attributes
18
+
19
+
20
+ ArAggregateByInterval::Utils.ar_to_hash(Click.count_daily(:created_at, 3.month.ago).instance_variable_get('@wut'), {'datechunk__' => 'totalchunked__'})
21
+ ArAggregateByInterval::Utils.ar_to_hash(Click.count_weekly(:created_at, 3.month.ago).instance_variable_get('@wut'), {'datechunk__' => 'totalchunked__'})
22
+
23
+
24
+ Bundler.require
25
+ require 'rails'
26
+ ActiveRecord::Base.configurations = YAML.load_file('./config/database.yml')
27
+
28
+ ActiveRecord::Tasks::DatabaseTasks.send(:each_local_configuration) do |config|
29
+ begin
30
+ ActiveRecord::Tasks::DatabaseTasks.send(:drop, config)
31
+ rescue
32
+ end
33
+ begin
34
+ ActiveRecord::Tasks::DatabaseTasks.send(:create, config)
35
+ rescue
36
+ end
37
+
38
+ ActiveRecord::Base.establish_connection config
39
+ load './spec/ar_bootstrap/schema.rb'
40
+ end
@@ -48,7 +48,7 @@ module ArAggregateByInterval
48
48
  end
49
49
 
50
50
  def ruby_strftime_map
51
- @ruby_strftime_map ||= {
51
+ {
52
52
  'monthly' => '%Y-%m',
53
53
  # sqlite doesn't support ISO weeks
54
54
  'weekly' => Utils.db_vendor.match(/sqlite/i) ? '%Y-%U' : '%G-%V',
@@ -82,9 +82,8 @@ module ArAggregateByInterval
82
82
  end
83
83
 
84
84
  def db_vendor
85
- @db_vendor ||=
86
- ActiveRecord::Base.connection_config.try(:symbolize_keys).try(:[], :adapter) ||
87
- ENV['DATABASE_URL']
85
+ ActiveRecord::Base.connection_config.try(:symbolize_keys).try(:[], :adapter) ||
86
+ ENV['DATABASE_URL']
88
87
  end
89
88
 
90
89
  # converts args like: [weekly, beginning] to beginning_of_week
@@ -1,3 +1,3 @@
1
1
  module ArAggregateByInterval
2
- VERSION = '1.1.5'
2
+ VERSION = '1.1.6'
3
3
  end
@@ -0,0 +1,15 @@
1
+ mysql:
2
+ adapter: mysql2
3
+ encoding: utf8
4
+ database: 'ar_aggregate_by_interval_test'
5
+ pool: 1
6
+ postgresql:
7
+ adapter: postgresql
8
+ encoding: utf8
9
+ database: 'ar_aggregate_by_interval_test'
10
+ pool: 1
11
+ sqlite3:
12
+ adapter: sqlite3
13
+ encoding: utf8
14
+ database: './db/ar_aggregate_by_interval_test.sqlite3'
15
+ pool: 1
@@ -1,8 +1,29 @@
1
+ PROJECT_ROOT = File.expand_path File.join(File.dirname(__FILE__), '../..')
2
+
1
3
  require 'active_record'
2
4
 
3
- ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
5
+ # rails is needed for ActiveRecord::Tasks::DatabaseTasks
6
+ require 'rails'
7
+
8
+ # Rails.root is needed for ActiveRecord::Tasks::DatabaseTasks
9
+ def Rails.root
10
+ PROJECT_ROOT
11
+ end
4
12
 
5
- load File.join(File.dirname(__FILE__), './schema.rb')
13
+ # load database.yml
14
+ ActiveRecord::Base.configurations = YAML.load_file(File.join(PROJECT_ROOT, 'spec/ar_bootstrap/database.yml'))
15
+ # drop all DBs
16
+ ActiveRecord::Tasks::DatabaseTasks.drop_all
17
+
18
+ # iterate through each connection in database.yml
19
+ ActiveRecord::Tasks::DatabaseTasks.send(:each_local_configuration) do |config|
20
+ # create DB
21
+ ActiveRecord::Tasks::DatabaseTasks.send(:create, config)
22
+ # connect to it
23
+ ActiveRecord::Base.establish_connection config
24
+ # load schema into it
25
+ load File.join(PROJECT_ROOT, 'spec/ar_bootstrap/schema.rb')
26
+ end
6
27
 
7
28
  class Blog < ActiveRecord::Base
8
29
  has_many :page_views
@@ -2,150 +2,165 @@ require 'ar_aggregate_by_interval'
2
2
 
3
3
  describe ArAggregateByInterval do
4
4
 
5
- before(:all) do |example|
6
- @from = DateTime.parse '2013-08-05'
7
- @to = @from
8
- blog1 = Blog.create arbitrary_number: 10, created_at: @from
9
- blog2 = Blog.create arbitrary_number: 20, created_at: @from
10
- blog1.page_views.create date: @from
11
- blog1.page_views.create date: @from
5
+ after(:all) do
6
+ ActiveRecord::Tasks::DatabaseTasks.drop_all
12
7
  end
13
8
 
14
- shared_examples_for 'count .values_and_dates' do
15
- it 'returns value and date with expected values' do
16
- expect(subject.values_and_dates).to eq([date: @from.beginning_of_week.to_date, value: 2])
17
- end
18
- end
9
+ shared_examples_for 'working gem' do |db_config|
19
10
 
20
- shared_examples_for 'sum .values_and_dates' do
21
- it 'returns value and date with expected values' do
22
- expect(subject.values_and_dates).to eq([date: @from.beginning_of_week.to_date, value: 30])
23
- end
24
- end
11
+ before(:all) do |example|
12
+ # connect to DB specified by db_config (a symbol matching database.yml keys)
13
+ ActiveRecord::Base.establish_connection db_config
25
14
 
26
- shared_examples_for 'avg .values_and_dates' do
27
- it 'returns value and date with expected values' do
28
- expect(subject.values_and_dates).to eq([date: @from.beginning_of_week.to_date, value: 15])
15
+ @from = DateTime.parse '2013-08-05'
16
+ @to = @from
17
+ blog1 = Blog.create! arbitrary_number: 10, created_at: @from
18
+ blog2 = Blog.create! arbitrary_number: 20, created_at: @from
19
+ blog1.page_views.create! date: @from
20
+ blog1.page_views.create! date: @from
29
21
  end
30
- end
31
22
 
32
- context 'ActiveRecord::Relation scoped' do
33
- subject do
34
- # `where` returns ActiveRecord::Relation
35
- Blog.where('id > 0').count_weekly(:created_at, @from, @from)
23
+ shared_examples_for 'count .values_and_dates' do
24
+ it "returns value and date with expected values on #{db_config}" do
25
+ expect(subject.values_and_dates).to eq([date: @from.beginning_of_week.to_date, value: 2])
26
+ end
36
27
  end
37
- it_behaves_like 'count .values_and_dates'
38
- end
39
28
 
40
- context 'Array scoped' do
41
- subject do
42
- # `associations` return arrays
43
- Blog.first.page_views.count_weekly(:date, @from, @from)
29
+ shared_examples_for 'sum .values_and_dates' do
30
+ it "returns value and date with expected values on #{db_config}" do
31
+ expect(subject.values_and_dates).to eq([date: @from.beginning_of_week.to_date, value: 30])
32
+ end
44
33
  end
45
- it_behaves_like 'count .values_and_dates'
46
- end
47
34
 
48
- context 'hash args' do
35
+ shared_examples_for 'avg .values_and_dates' do
36
+ it "returns value and date with expected values on #{db_config}" do
37
+ expect(subject.values_and_dates).to eq([date: @from.beginning_of_week.to_date, value: 15])
38
+ end
39
+ end
49
40
 
50
- context 'for count' do
41
+ context 'ActiveRecord::Relation scoped' do
51
42
  subject do
52
- Blog.count_weekly({
53
- group_by_column: :created_at,
54
- from: @from,
55
- to: @to
56
- })
43
+ # `where` returns ActiveRecord::Relation
44
+ Blog.where('id > 0').count_weekly(:created_at, @from, @from)
57
45
  end
58
46
  it_behaves_like 'count .values_and_dates'
59
47
  end
60
48
 
61
- context 'for sum' do
49
+ context 'Array scoped' do
62
50
  subject do
63
- Blog.sum_weekly({
64
- group_by_column: :created_at,
65
- aggregate_column: :arbitrary_number,
66
- from: @from,
67
- to: @to
68
- })
51
+ # `associations` return arrays
52
+ Blog.first.page_views.count_weekly(:date, @from, @from)
69
53
  end
70
- it_behaves_like 'sum .values_and_dates'
54
+ it_behaves_like 'count .values_and_dates'
55
+ end
56
+
57
+ context 'hash args' do
71
58
 
72
- context 'with strings' do
59
+ context 'for count' do
60
+ subject do
61
+ Blog.count_weekly({
62
+ group_by_column: :created_at,
63
+ from: @from,
64
+ to: @to
65
+ })
66
+ end
67
+ it_behaves_like 'count .values_and_dates'
68
+ end
69
+
70
+ context 'for sum' do
73
71
  subject do
74
72
  Blog.sum_weekly({
75
- group_by_column: 'created_at',
76
- aggregate_column: 'arbitrary_number',
73
+ group_by_column: :created_at,
74
+ aggregate_column: :arbitrary_number,
77
75
  from: @from,
78
76
  to: @to
79
77
  })
80
78
  end
81
79
  it_behaves_like 'sum .values_and_dates'
82
- end
83
- end
84
80
 
85
- context 'for avg' do
86
- subject do
87
- Blog.avg_weekly({
88
- group_by_column: :created_at,
89
- aggregate_column: :arbitrary_number,
90
- from: @from,
91
- to: @to
92
- })
81
+ context 'with strings' do
82
+ subject do
83
+ Blog.sum_weekly({
84
+ group_by_column: 'created_at',
85
+ aggregate_column: 'arbitrary_number',
86
+ from: @from,
87
+ to: @to
88
+ })
89
+ end
90
+ it_behaves_like 'sum .values_and_dates'
91
+ end
93
92
  end
94
- it_behaves_like 'avg .values_and_dates'
95
- end
96
-
97
- end
98
93
 
99
- context 'normal args' do
100
- context 'for count' do
101
- subject do
102
- Blog.count_weekly(:created_at, @from, @from)
94
+ context 'for avg' do
95
+ subject do
96
+ Blog.avg_weekly({
97
+ group_by_column: :created_at,
98
+ aggregate_column: :arbitrary_number,
99
+ from: @from,
100
+ to: @to
101
+ })
102
+ end
103
+ it_behaves_like 'avg .values_and_dates'
103
104
  end
104
- it_behaves_like 'count .values_and_dates'
105
+
105
106
  end
106
- context 'for sum' do
107
- subject do
108
- Blog.sum_weekly(:created_at, :arbitrary_number, @from, @from)
109
- end
110
- it_behaves_like 'sum .values_and_dates'
111
107
 
112
- context 'with strings' do
108
+ context 'normal args' do
109
+ context 'for count' do
113
110
  subject do
114
- Blog.sum_weekly('created_at', 'arbitrary_number', @from, @from)
111
+ Blog.count_weekly(:created_at, @from, @from)
115
112
  end
116
- it_behaves_like 'sum .values_and_dates'
113
+ it_behaves_like 'count .values_and_dates'
117
114
  end
118
- end
119
- context 'for avg' do
120
- subject do
121
- Blog.avg_weekly(:created_at, :arbitrary_number, @from, @from)
122
- end
123
- it_behaves_like 'avg .values_and_dates'
124
- end
125
- end
115
+ context 'for sum' do
116
+ subject do
117
+ Blog.sum_weekly(:created_at, :arbitrary_number, @from, @from)
118
+ end
119
+ it_behaves_like 'sum .values_and_dates'
126
120
 
127
- context 'bad args' do
128
- context 'for count' do
129
- subject do
130
- Blog.count_weekly(:created_at, {}, {})
121
+ context 'with strings' do
122
+ subject do
123
+ Blog.sum_weekly('created_at', 'arbitrary_number', @from, @from)
124
+ end
125
+ it_behaves_like 'sum .values_and_dates'
126
+ end
131
127
  end
132
- it 'raise ArgumentError' do
133
- expect do
134
- subject
135
- end.to raise_error(ArgumentError)
128
+ context 'for avg' do
129
+ subject do
130
+ Blog.avg_weekly(:created_at, :arbitrary_number, @from, @from)
131
+ end
132
+ it_behaves_like 'avg .values_and_dates'
136
133
  end
137
134
  end
138
135
 
139
- context 'for sum' do
140
- subject do
141
- Blog.sum_weekly(:created_at, @from, @from)
136
+ context 'bad args' do
137
+ context 'for count' do
138
+ subject do
139
+ Blog.count_weekly(:created_at, {}, {})
140
+ end
141
+ it 'raise ArgumentError' do
142
+ expect do
143
+ subject
144
+ end.to raise_error(ArgumentError)
145
+ end
142
146
  end
143
- it 'raise ArgumentError' do
144
- expect do
145
- subject
146
- end.to raise_error(ArgumentError, /aggregate_column/)
147
+
148
+ context 'for sum' do
149
+ subject do
150
+ Blog.sum_weekly(:created_at, @from, @from)
151
+ end
152
+ it 'raise ArgumentError' do
153
+ expect do
154
+ subject
155
+ end.to raise_error(ArgumentError, /aggregate_column/)
156
+ end
147
157
  end
148
158
  end
159
+
149
160
  end
150
161
 
162
+ it_behaves_like 'working gem', :mysql
163
+ it_behaves_like 'working gem', :postgresql
164
+ it_behaves_like 'working gem', :sqlite3
165
+
151
166
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'database_cleaner'
2
-
3
1
  # This file was generated by the `rspec --init` command. Conventionally, all
4
2
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
5
3
  # The generated `.rspec` file contains `--require spec_helper` which will cause this
@@ -18,17 +16,6 @@ require 'database_cleaner'
18
16
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
17
  RSpec.configure do |config|
20
18
 
21
- config.before(:suite) do
22
- DatabaseCleaner.strategy = :transaction
23
- # DatabaseCleaner.clean_with(:truncation)
24
- end
25
-
26
- config.around(:each) do |example|
27
- DatabaseCleaner.cleaning do
28
- example.run
29
- end
30
- end
31
-
32
19
  # rspec-expectations config goes here. You can use an alternate
33
20
  # assertion/expectation library such as wrong or the stdlib/minitest
34
21
  # assertions if you prefer.
@@ -102,4 +89,4 @@ RSpec.configure do |config|
102
89
  =end
103
90
  end
104
91
 
105
- require 'ar_bootstrap/init'
92
+ require 'ar_bootstrap/init'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar_aggregate_by_interval
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Otto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-09 00:00:00.000000000 Z
11
+ date: 2015-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -39,33 +39,47 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: database_cleaner
42
+ name: guard-rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.4'
47
+ version: '4.5'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.4'
54
+ version: '4.5'
55
55
  - !ruby/object:Gem::Dependency
56
- name: guard-rspec
56
+ name: mysql2
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '4.5'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '4.5'
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pg
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: sqlite3
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,20 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '4.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '4.2'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: activesupport
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -154,11 +182,13 @@ files:
154
182
  - Rakefile
155
183
  - ar_aggregate_by_interval.gemspec
156
184
  - circle.yml
185
+ - helpers.rb
157
186
  - lib/ar_aggregate_by_interval.rb
158
187
  - lib/ar_aggregate_by_interval/query_result.rb
159
188
  - lib/ar_aggregate_by_interval/query_runner.rb
160
189
  - lib/ar_aggregate_by_interval/utils.rb
161
190
  - lib/ar_aggregate_by_interval/version.rb
191
+ - spec/ar_bootstrap/database.yml
162
192
  - spec/ar_bootstrap/init.rb
163
193
  - spec/ar_bootstrap/schema.rb
164
194
  - spec/lib/ar_aggregate_by_interval/utils_spec.rb
@@ -188,6 +218,7 @@ signing_key:
188
218
  specification_version: 4
189
219
  summary: add [sum|count]_[daily|weekly|monthly] to your AR models for MySQL AND Postgres
190
220
  test_files:
221
+ - spec/ar_bootstrap/database.yml
191
222
  - spec/ar_bootstrap/init.rb
192
223
  - spec/ar_bootstrap/schema.rb
193
224
  - spec/lib/ar_aggregate_by_interval/utils_spec.rb