rollups 0.3.2 → 0.4.1
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 +4 -4
- data/CHANGELOG.md +9 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -7
- data/lib/rollup/aggregator.rb +9 -3
- data/lib/rollup/utils.rb +1 -1
- data/lib/rollup/version.rb +1 -1
- data/lib/rollup.rb +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98d29255d1ec08a3ca9e7db462c8157b3c87056ffc2258c785bc768e87d1afaa
|
4
|
+
data.tar.gz: 1810ec099cb09c935de19a415e17bca8842f7d0a2cd5d1ecc5bbb5dc51c2b514
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efdd0f38f818d3bef2cce27554b3b84e104b78f1844475b334273cbf81c3fbea0ebe7a2b37ae394eae9b429e4f7a687b6ee901ab286c6981aa5c177fec92a8f4
|
7
|
+
data.tar.gz: a6e0c406ccc598c3a070cf4819eef7d3cecb8ae761f825fe41580d21a95535f5c3c83c6b24569484be31865eba6dd36a0084c467a3f9324b5aa57b544040ad4c
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 0.4.1 (2024-10-07)
|
2
|
+
|
3
|
+
- Fixed connection leasing for Active Record 7.2+
|
4
|
+
|
5
|
+
## 0.4.0 (2024-10-01)
|
6
|
+
|
7
|
+
- Added support for Active Record 8
|
8
|
+
- Dropped support for Ruby < 3.1 and Active Record < 7
|
9
|
+
|
1
10
|
## 0.3.2 (2024-02-09)
|
2
11
|
|
3
12
|
- Fixed incorrect rollups with `time_zone: false` when `Rollup.time_zone` has a negative UTC offset
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Works great with [Ahoy](https://github.com/ankane/ahoy) and [Searchjoy](https://github.com/ankane/searchjoy)
|
6
6
|
|
7
|
-
[](https://github.com/ankane/rollup/actions)
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
@@ -14,12 +14,6 @@ Add this line to your application’s Gemfile:
|
|
14
14
|
gem "rollups"
|
15
15
|
```
|
16
16
|
|
17
|
-
For Rails < 6, also add:
|
18
|
-
|
19
|
-
```ruby
|
20
|
-
gem "activerecord-import"
|
21
|
-
```
|
22
|
-
|
23
17
|
And run:
|
24
18
|
|
25
19
|
```sh
|
data/lib/rollup/aggregator.rb
CHANGED
@@ -29,7 +29,7 @@ class Rollup
|
|
29
29
|
def validate_column(column)
|
30
30
|
unless column.is_a?(Symbol) || column.is_a?(Arel::Nodes::SqlLiteral)
|
31
31
|
column = column.to_s
|
32
|
-
unless /\A\w+(\.\w+)?\z/i.match(column)
|
32
|
+
unless /\A\w+(\.\w+)?\z/i.match?(column)
|
33
33
|
raise ActiveRecord::UnknownAttributeReference, "Query method called with non-attribute argument(s): #{column.inspect}. Use Arel.sql() for known-safe values."
|
34
34
|
end
|
35
35
|
end
|
@@ -119,9 +119,9 @@ class Rollup
|
|
119
119
|
|
120
120
|
# removing starting and ending quotes
|
121
121
|
# for simplicity, they don't need to be the same
|
122
|
-
value = value[1..-2] if value.match(/\A["'`].+["'`]\z/)
|
122
|
+
value = value[1..-2] if value.match?(/\A["'`].+["'`]\z/)
|
123
123
|
|
124
|
-
unless value.match(/\A\w+\z/)
|
124
|
+
unless value.match?(/\A\w+\z/)
|
125
125
|
raise "Cannot determine dimension name: #{group}. Use the dimension_names option"
|
126
126
|
end
|
127
127
|
|
@@ -191,6 +191,12 @@ class Rollup
|
|
191
191
|
conflict_target << :dimensions if Utils.dimensions_supported?
|
192
192
|
|
193
193
|
options = Utils.mysql? ? {} : {unique_by: conflict_target}
|
194
|
+
if ActiveRecord::VERSION::MAJOR >= 8
|
195
|
+
utc = ActiveSupport::TimeZone["Etc/UTC"]
|
196
|
+
records.each do |v|
|
197
|
+
v[:time] = v[:time].in_time_zone(utc) if v[:time].is_a?(Date)
|
198
|
+
end
|
199
|
+
end
|
194
200
|
Rollup.unscoped.upsert_all(records, **options)
|
195
201
|
end
|
196
202
|
end
|
data/lib/rollup/utils.rb
CHANGED
data/lib/rollup/version.rb
CHANGED
data/lib/rollup.rb
CHANGED
@@ -23,7 +23,7 @@ class Rollup < ActiveRecord::Base
|
|
23
23
|
|
24
24
|
# use select_all due to incorrect casting with pluck
|
25
25
|
sql = relation.order(:time).select(Utils.time_sql(interval), :value).to_sql
|
26
|
-
result =
|
26
|
+
result = connection_pool.with_connection { |c| c.select_all(sql) }.rows
|
27
27
|
|
28
28
|
Utils.make_series(result, interval)
|
29
29
|
end
|
@@ -35,7 +35,7 @@ class Rollup < ActiveRecord::Base
|
|
35
35
|
|
36
36
|
# use select_all to reduce allocations
|
37
37
|
sql = relation.order(:time).select(Utils.time_sql(interval), :value, :dimensions).to_sql
|
38
|
-
result =
|
38
|
+
result = connection_pool.with_connection { |c| c.select_all(sql) }.rows
|
39
39
|
|
40
40
|
result.group_by { |r| JSON.parse(r[2]) }.map do |dimensions, rollups|
|
41
41
|
{dimensions: dimensions, data: Utils.make_series(rollups, interval)}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollups
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '7'
|
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: '
|
26
|
+
version: '7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: groupdate
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,14 +68,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
68
|
requirements:
|
69
69
|
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: '3'
|
71
|
+
version: '3.1'
|
72
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
requirements: []
|
78
|
-
rubygems_version: 3.5.
|
78
|
+
rubygems_version: 3.5.16
|
79
79
|
signing_key:
|
80
80
|
specification_version: 4
|
81
81
|
summary: Rollup time-series data in Rails
|