timescaledb-rails 0.1.5 → 0.1.6
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/README.md +10 -4
- data/lib/timescaledb/rails/extensions/active_record/command_recorder.rb +34 -47
- data/lib/timescaledb/rails/extensions/active_record/postgresql_database_tasks.rb +10 -4
- data/lib/timescaledb/rails/extensions/active_record/schema_dumper.rb +19 -10
- data/lib/timescaledb/rails/extensions/active_record/schema_statements.rb +32 -12
- data/lib/timescaledb/rails/model/hyperfunctions.rb +11 -5
- data/lib/timescaledb/rails/models/application_record.rb +24 -0
- data/lib/timescaledb/rails/models/chunk.rb +4 -4
- data/lib/timescaledb/rails/models/compression_setting.rb +1 -1
- data/lib/timescaledb/rails/models/concerns/durationable.rb +2 -0
- data/lib/timescaledb/rails/models/continuous_aggregate.rb +11 -2
- data/lib/timescaledb/rails/models/dimension.rb +1 -1
- data/lib/timescaledb/rails/models/hypertable.rb +7 -2
- data/lib/timescaledb/rails/models/job.rb +1 -1
- data/lib/timescaledb/rails/models.rb +2 -0
- data/lib/timescaledb/rails/version.rb +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e350967c0553e59b57a773226c1b532f9e1e2a93a03b1908c7228816c942d39
|
4
|
+
data.tar.gz: 6636c247f01919bfd344f8ff4afb7a74eaff050f4ec3246b64f24904c3046752
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a96ee3099632fa74997735f6bbef27971be5f65d0e54e2978c90d4df7ae0ea64a7478acd0ffec787d05bcb0c7126a0ee51937fa4d59b03fc1fbb5c80bb20189c
|
7
|
+
data.tar.gz: 6bdd3e8bfe645fea36dc66461d6c4773d560d86d9af79c0bbb5a7a6d1d11eaf424898b6f3e07591b03828a2b2a521581b6a47783bb60e8dfa3b2b2a8e3ff8721
|
data/README.md
CHANGED
@@ -51,16 +51,20 @@ class CreatePayloadHypertable < ActiveRecord::Migration[7.0]
|
|
51
51
|
end
|
52
52
|
```
|
53
53
|
|
54
|
-
Add hypertable compression
|
54
|
+
Add hypertable compression policy
|
55
55
|
|
56
56
|
```ruby
|
57
|
-
class
|
57
|
+
class AddEventCompressionPolicy < ActiveRecord::Migration[7.0]
|
58
58
|
def up
|
59
|
-
|
59
|
+
enable_hypertable_compression :events, segment_by: :name, order_by: 'occurred_at DESC'
|
60
|
+
|
61
|
+
add_hypertable_compression_policy :events, 20.days
|
60
62
|
end
|
61
63
|
|
62
64
|
def down
|
63
|
-
|
65
|
+
remove_hypertable_compression_policy :events
|
66
|
+
|
67
|
+
disable_hypertable_compression :events
|
64
68
|
end
|
65
69
|
end
|
66
70
|
```
|
@@ -97,6 +101,8 @@ Create continuous aggregate
|
|
97
101
|
|
98
102
|
```ruby
|
99
103
|
class CreateTemperatureEventAggregate < ActiveRecord::Migration[7.0]
|
104
|
+
disable_ddl_transaction!
|
105
|
+
|
100
106
|
def up
|
101
107
|
create_continuous_aggregate(
|
102
108
|
:temperature_events,
|
@@ -5,48 +5,27 @@ module Timescaledb
|
|
5
5
|
module ActiveRecord
|
6
6
|
# :nodoc:
|
7
7
|
module CommandRecorder
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
record(:add_hypertable_retention_policy, args, &block)
|
30
|
-
end
|
31
|
-
|
32
|
-
def remove_hypertable_retention_policy(*args, &block)
|
33
|
-
record(:remove_hypertable_retention_policy, args, &block)
|
34
|
-
end
|
35
|
-
|
36
|
-
def create_continuous_aggregate(*args, &block)
|
37
|
-
record(:create_continuous_aggregate, args, &block)
|
38
|
-
end
|
39
|
-
|
40
|
-
def drop_continuous_aggregate(*args, &block)
|
41
|
-
record(:drop_continuous_aggregate, args, &block)
|
42
|
-
end
|
43
|
-
|
44
|
-
def add_continuous_aggregate_policy(*args, &block)
|
45
|
-
record(:add_continuous_aggregate_policy, args, &block)
|
46
|
-
end
|
47
|
-
|
48
|
-
def remove_continuous_aggregate_policy(*args, &block)
|
49
|
-
record(:remove_continuous_aggregate_policy, args, &block)
|
8
|
+
%w[
|
9
|
+
create_hypertable
|
10
|
+
enable_hypertable_compression
|
11
|
+
disable_hypertable_compression
|
12
|
+
add_hypertable_compression_policy
|
13
|
+
remove_hypertable_compression_policy
|
14
|
+
add_hypertable_reorder_policy
|
15
|
+
remove_hypertable_reorder_policy
|
16
|
+
add_hypertable_retention_policy
|
17
|
+
remove_hypertable_retention_policy
|
18
|
+
create_continuous_aggregate
|
19
|
+
drop_continuous_aggregate
|
20
|
+
add_continuous_aggregate_policy
|
21
|
+
remove_continuous_aggregate_policy
|
22
|
+
].each do |method|
|
23
|
+
module_eval <<-METHOD, __FILE__, __LINE__ + 1
|
24
|
+
def #{method}(*args, &block) # def create_table(*args, &block)
|
25
|
+
record(:"#{method}", args, &block) # record(:create_table, args, &block)
|
26
|
+
end # end
|
27
|
+
METHOD
|
28
|
+
ruby2_keywords(method) if respond_to?(:ruby2_keywords)
|
50
29
|
end
|
51
30
|
|
52
31
|
def invert_create_hypertable(args, &block)
|
@@ -57,16 +36,24 @@ module Timescaledb
|
|
57
36
|
[:drop_table, args.first, block]
|
58
37
|
end
|
59
38
|
|
60
|
-
def
|
61
|
-
[:
|
39
|
+
def invert_enable_hypertable_compression(args, &block)
|
40
|
+
[:disable_hypertable_compression, args, block]
|
41
|
+
end
|
42
|
+
|
43
|
+
def invert_disable_hypertable_compression(args, &block)
|
44
|
+
[:enable_hypertable_compression, args, block]
|
45
|
+
end
|
46
|
+
|
47
|
+
def invert_add_hypertable_compression_policy(args, &block)
|
48
|
+
[:remove_hypertable_compression_policy, args, block]
|
62
49
|
end
|
63
50
|
|
64
|
-
def
|
51
|
+
def invert_remove_hypertable_compression_policy(args, &block)
|
65
52
|
if args.size < 2
|
66
|
-
raise ::ActiveRecord::IrreversibleMigration, '
|
53
|
+
raise ::ActiveRecord::IrreversibleMigration, 'remove_hypertable_compression_policy is only reversible if given table name and compress period.' # rubocop:disable Layout/LineLength
|
67
54
|
end
|
68
55
|
|
69
|
-
[:
|
56
|
+
[:add_hypertable_compression_policy, args, block]
|
70
57
|
end
|
71
58
|
|
72
59
|
def invert_add_hypertable_retention_policy(args, &block)
|
@@ -27,7 +27,8 @@ module Timescaledb
|
|
27
27
|
Timescaledb::Rails::Hypertable.all.each do |hypertable|
|
28
28
|
drop_ts_insert_trigger_statment(hypertable, file)
|
29
29
|
create_hypertable_statement(hypertable, file)
|
30
|
-
|
30
|
+
enable_hypertable_compression_statement(hypertable, file)
|
31
|
+
add_hypertable_compression_policy_statement(hypertable, file)
|
31
32
|
add_hypertable_reorder_policy_statement(hypertable, file)
|
32
33
|
add_hypertable_retention_policy_statement(hypertable, file)
|
33
34
|
end
|
@@ -36,7 +37,7 @@ module Timescaledb
|
|
36
37
|
|
37
38
|
def continuous_aggregates(filename)
|
38
39
|
File.open(filename, 'a') do |file|
|
39
|
-
Timescaledb::Rails::ContinuousAggregate.
|
40
|
+
Timescaledb::Rails::ContinuousAggregate.dependency_ordered.each do |continuous_aggregate|
|
40
41
|
create_continuous_aggregate_statement(continuous_aggregate, file)
|
41
42
|
add_continuous_aggregate_policy_statement(continuous_aggregate, file)
|
42
43
|
end
|
@@ -56,12 +57,17 @@ module Timescaledb
|
|
56
57
|
file << "SELECT create_hypertable('#{hypertable.hypertable_schema}.#{hypertable.hypertable_name}', '#{hypertable.time_column_name}', #{options});\n\n"
|
57
58
|
end
|
58
59
|
|
59
|
-
def
|
60
|
+
def enable_hypertable_compression_statement(hypertable, file)
|
60
61
|
return unless hypertable.compression?
|
61
62
|
|
62
63
|
options = hypertable_compression_options(hypertable)
|
63
64
|
|
64
65
|
file << "ALTER TABLE #{hypertable.hypertable_schema}.#{hypertable.hypertable_name} SET (#{options});\n\n"
|
66
|
+
end
|
67
|
+
|
68
|
+
def add_hypertable_compression_policy_statement(hypertable, file)
|
69
|
+
return unless hypertable.compression_policy?
|
70
|
+
|
65
71
|
file << "SELECT add_compression_policy('#{hypertable.hypertable_schema}.#{hypertable.hypertable_name}', INTERVAL '#{hypertable.compression_policy_interval}');\n\n"
|
66
72
|
end
|
67
73
|
|
@@ -139,7 +145,7 @@ module Timescaledb
|
|
139
145
|
|
140
146
|
# @return [Boolean]
|
141
147
|
def timescale_enabled?
|
142
|
-
|
148
|
+
ApplicationRecord.timescale_connection?(connection) && Hypertable.table_exists?
|
143
149
|
end
|
144
150
|
end
|
145
151
|
# rubocop:enable Layout/LineLength
|
@@ -19,9 +19,9 @@ module Timescaledb
|
|
19
19
|
def continuous_aggregates(stream)
|
20
20
|
return unless timescale_enabled?
|
21
21
|
|
22
|
-
Timescaledb::Rails::ContinuousAggregate.
|
23
|
-
continuous_aggregate(
|
24
|
-
continuous_aggregate_policy(
|
22
|
+
Timescaledb::Rails::ContinuousAggregate.dependency_ordered.each do |ca|
|
23
|
+
continuous_aggregate(ca, stream)
|
24
|
+
continuous_aggregate_policy(ca, stream)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -55,8 +55,9 @@ module Timescaledb
|
|
55
55
|
|
56
56
|
hypertable(hypertable, stream)
|
57
57
|
hypertable_compression(hypertable, stream)
|
58
|
-
|
59
|
-
|
58
|
+
hypertable_compression_policy(hypertable, stream)
|
59
|
+
hypertable_reorder_policy(hypertable, stream)
|
60
|
+
hypertable_retention_policy(hypertable, stream)
|
60
61
|
end
|
61
62
|
|
62
63
|
private
|
@@ -72,14 +73,22 @@ module Timescaledb
|
|
72
73
|
def hypertable_compression(hypertable, stream)
|
73
74
|
return unless hypertable.compression?
|
74
75
|
|
76
|
+
options = [hypertable.hypertable_name.inspect, hypertable_compression_options(hypertable)]
|
77
|
+
|
78
|
+
stream.puts " enable_hypertable_compression #{options.join(', ')}"
|
79
|
+
stream.puts
|
80
|
+
end
|
81
|
+
|
82
|
+
def hypertable_compression_policy(hypertable, stream)
|
83
|
+
return unless hypertable.compression_policy?
|
84
|
+
|
75
85
|
options = [hypertable.hypertable_name.inspect, hypertable.compression_policy_interval.inspect]
|
76
|
-
options |= hypertable_compression_options(hypertable)
|
77
86
|
|
78
|
-
stream.puts "
|
87
|
+
stream.puts " add_hypertable_compression_policy #{options.join(', ')}"
|
79
88
|
stream.puts
|
80
89
|
end
|
81
90
|
|
82
|
-
def
|
91
|
+
def hypertable_reorder_policy(hypertable, stream)
|
83
92
|
return unless hypertable.reorder?
|
84
93
|
|
85
94
|
options = [hypertable.hypertable_name.inspect, hypertable.reorder_policy_index_name.inspect]
|
@@ -88,7 +97,7 @@ module Timescaledb
|
|
88
97
|
stream.puts
|
89
98
|
end
|
90
99
|
|
91
|
-
def
|
100
|
+
def hypertable_retention_policy(hypertable, stream)
|
92
101
|
return unless hypertable.retention?
|
93
102
|
|
94
103
|
options = [hypertable.hypertable_name.inspect, hypertable.retention_policy_interval.inspect]
|
@@ -140,7 +149,7 @@ module Timescaledb
|
|
140
149
|
end
|
141
150
|
|
142
151
|
def timescale_enabled?
|
143
|
-
|
152
|
+
ApplicationRecord.timescale_connection?(@connection) && Hypertable.table_exists?
|
144
153
|
end
|
145
154
|
end
|
146
155
|
end
|
@@ -40,29 +40,42 @@ module Timescaledb
|
|
40
40
|
execute "SELECT create_hypertable('#{table_name}', '#{time_column_name}', #{options_as_sql});"
|
41
41
|
end
|
42
42
|
|
43
|
-
# Enables compression
|
43
|
+
# Enables compression on given hypertable.
|
44
44
|
#
|
45
|
-
#
|
45
|
+
# enable_hypertable_compression('events', segment_by: :created_at, order_by: :name)
|
46
46
|
#
|
47
|
-
def
|
48
|
-
compress_after = compress_after.inspect if compress_after.is_a?(ActiveSupport::Duration)
|
49
|
-
|
47
|
+
def enable_hypertable_compression(table_name, segment_by: nil, order_by: nil)
|
50
48
|
options = ['timescaledb.compress']
|
51
49
|
options << "timescaledb.compress_orderby = '#{order_by}'" unless order_by.nil?
|
52
50
|
options << "timescaledb.compress_segmentby = '#{segment_by}'" unless segment_by.nil?
|
53
51
|
|
54
52
|
execute "ALTER TABLE #{table_name} SET (#{options.join(', ')});"
|
53
|
+
end
|
54
|
+
|
55
|
+
# Disables compression on given hypertable.
|
56
|
+
#
|
57
|
+
# disable_hypertable_compression('events')
|
58
|
+
#
|
59
|
+
def disable_hypertable_compression(table_name, segment_by: nil, order_by: nil) # rubocop:disable Lint/UnusedMethodArgument
|
60
|
+
execute "ALTER TABLE #{table_name} SET (timescaledb.compress = false);"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Adds compression policy to given hypertable.
|
64
|
+
#
|
65
|
+
# add_hypertable_compression_policy('events', 7.days)
|
66
|
+
#
|
67
|
+
def add_hypertable_compression_policy(table_name, compress_after)
|
68
|
+
compress_after = compress_after.inspect if compress_after.is_a?(ActiveSupport::Duration)
|
55
69
|
|
56
70
|
execute "SELECT add_compression_policy('#{table_name}', INTERVAL '#{stringify_interval(compress_after)}');"
|
57
71
|
end
|
58
72
|
|
59
|
-
# Removes compression policy
|
73
|
+
# Removes compression policy from the given hypertable.
|
60
74
|
#
|
61
|
-
#
|
75
|
+
# remove_hypertable_compression_policy('events')
|
62
76
|
#
|
63
|
-
def
|
77
|
+
def remove_hypertable_compression_policy(table_name, _compress_after = nil)
|
64
78
|
execute "SELECT remove_compression_policy('#{table_name}');"
|
65
|
-
execute "ALTER TABLE #{table_name.inspect} SET (timescaledb.compress = false);"
|
66
79
|
end
|
67
80
|
|
68
81
|
# Add a data retention policy to given hypertable.
|
@@ -103,15 +116,22 @@ module Timescaledb
|
|
103
116
|
# 'temperature_events', "SELECT * FROM events where event_type = 'temperature'"
|
104
117
|
# )
|
105
118
|
#
|
106
|
-
def create_continuous_aggregate(view_name, view_query)
|
107
|
-
|
119
|
+
def create_continuous_aggregate(view_name, view_query, force: false)
|
120
|
+
if force
|
121
|
+
execute "DROP MATERIALIZED VIEW #{quote_table_name(view_name)} CASCADE;" if view_exists? view_name
|
122
|
+
else
|
123
|
+
schema_cache.clear_data_source_cache!(view_name.to_s)
|
124
|
+
end
|
125
|
+
|
126
|
+
execute "CREATE MATERIALIZED VIEW #{quote_table_name(view_name)} " \
|
127
|
+
"WITH (timescaledb.continuous) AS #{view_query};"
|
108
128
|
end
|
109
129
|
|
110
130
|
# Drops a continuous aggregate
|
111
131
|
#
|
112
132
|
# drop_continuous_aggregate('temperature_events')
|
113
133
|
#
|
114
|
-
def drop_continuous_aggregate(view_name, _view_query = nil)
|
134
|
+
def drop_continuous_aggregate(view_name, _view_query = nil, force: false) # rubocop:disable Lint/UnusedMethodArgument
|
115
135
|
execute "DROP MATERIALIZED VIEW #{view_name};"
|
116
136
|
end
|
117
137
|
|
@@ -10,12 +10,18 @@ module Timescaledb
|
|
10
10
|
TIME_BUCKET_ALIAS = 'time_bucket'
|
11
11
|
|
12
12
|
# @return [ActiveRecord::Relation<ActiveRecord::Base>]
|
13
|
-
def time_bucket(interval, target_column = nil)
|
14
|
-
target_column
|
13
|
+
def time_bucket(interval, target_column = nil, select_alias: TIME_BUCKET_ALIAS)
|
14
|
+
target_column &&= Arel.sql(target_column.to_s)
|
15
|
+
target_column ||= arel_table[hypertable_time_column_name]
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
.
|
17
|
+
time_bucket = Arel::Nodes::NamedFunction.new(
|
18
|
+
'time_bucket',
|
19
|
+
[Arel::Nodes.build_quoted(format_interval_value(interval)), target_column]
|
20
|
+
)
|
21
|
+
|
22
|
+
select(time_bucket.dup.as(select_alias))
|
23
|
+
.group(time_bucket)
|
24
|
+
.order(time_bucket)
|
19
25
|
.extending(AggregateFunctions)
|
20
26
|
end
|
21
27
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Timescaledb
|
4
|
+
module Rails
|
5
|
+
# :nodoc:
|
6
|
+
class ApplicationRecord < ::ActiveRecord::Base
|
7
|
+
self.abstract_class = true
|
8
|
+
|
9
|
+
def self.timescale_connection?(connection)
|
10
|
+
pool_name = lambda do |pool|
|
11
|
+
if pool.respond_to?(:db_config)
|
12
|
+
pool.db_config.name
|
13
|
+
elsif pool.respond_to?(:spec)
|
14
|
+
pool.spec.name
|
15
|
+
else
|
16
|
+
raise "Don't know how to get pool name from #{pool.inspect}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
pool_name[connection.pool] == pool_name[self.connection.pool]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Timescaledb
|
4
4
|
module Rails
|
5
5
|
# :nodoc:
|
6
|
-
class Chunk <
|
6
|
+
class Chunk < ApplicationRecord
|
7
7
|
self.table_name = 'timescaledb_information.chunks'
|
8
8
|
self.primary_key = 'hypertable_name'
|
9
9
|
|
@@ -17,13 +17,13 @@ module Timescaledb
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def compress!
|
20
|
-
|
20
|
+
self.class.connection.execute(
|
21
21
|
"SELECT compress_chunk('#{chunk_full_name}')"
|
22
22
|
)
|
23
23
|
end
|
24
24
|
|
25
25
|
def decompress!
|
26
|
-
|
26
|
+
self.class.connection.execute(
|
27
27
|
"SELECT decompress_chunk('#{chunk_full_name}')"
|
28
28
|
)
|
29
29
|
end
|
@@ -40,7 +40,7 @@ module Timescaledb
|
|
40
40
|
options = ["'#{chunk_full_name}'"]
|
41
41
|
options << "'#{index}'" if index.present?
|
42
42
|
|
43
|
-
|
43
|
+
self.class.connection.execute(
|
44
44
|
"SELECT reorder_chunk(#{options.join(', ')})"
|
45
45
|
)
|
46
46
|
end
|
@@ -5,7 +5,7 @@ require 'timescaledb/rails/models/concerns/durationable'
|
|
5
5
|
module Timescaledb
|
6
6
|
module Rails
|
7
7
|
# :nodoc:
|
8
|
-
class ContinuousAggregate <
|
8
|
+
class ContinuousAggregate < ApplicationRecord
|
9
9
|
include Timescaledb::Rails::Models::Durationable
|
10
10
|
|
11
11
|
self.table_name = 'timescaledb_information.continuous_aggregates'
|
@@ -13,13 +13,22 @@ module Timescaledb
|
|
13
13
|
|
14
14
|
has_many :jobs, foreign_key: 'hypertable_name', class_name: 'Timescaledb::Rails::Job'
|
15
15
|
|
16
|
+
def self.dependency_ordered
|
17
|
+
deps = find_each.index_by(&:materialization_hypertable_name)
|
18
|
+
|
19
|
+
TSort.tsort_each(
|
20
|
+
->(&b) { deps.each_value.sort_by(&:hypertable_name).each(&b) },
|
21
|
+
->(n, &b) { Array.wrap(deps[n.hypertable_name]).each(&b) }
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
16
25
|
# Manually refresh a continuous aggregate.
|
17
26
|
#
|
18
27
|
# @param [DateTime] start_time
|
19
28
|
# @param [DateTime] end_time
|
20
29
|
#
|
21
30
|
def refresh!(start_time = 'NULL', end_time = 'NULL')
|
22
|
-
|
31
|
+
self.class.connection.execute(
|
23
32
|
"CALL refresh_continuous_aggregate('#{view_name}', #{start_time}, #{end_time});"
|
24
33
|
)
|
25
34
|
end
|
@@ -5,7 +5,7 @@ require 'timescaledb/rails/models/concerns/durationable'
|
|
5
5
|
module Timescaledb
|
6
6
|
module Rails
|
7
7
|
# :nodoc:
|
8
|
-
class Hypertable <
|
8
|
+
class Hypertable < ApplicationRecord
|
9
9
|
include Timescaledb::Rails::Models::Durationable
|
10
10
|
|
11
11
|
self.table_name = 'timescaledb_information.hypertables'
|
@@ -57,10 +57,15 @@ module Timescaledb
|
|
57
57
|
end
|
58
58
|
|
59
59
|
# @return [Boolean]
|
60
|
-
def
|
60
|
+
def compression_policy?
|
61
61
|
compression_job.present?
|
62
62
|
end
|
63
63
|
|
64
|
+
# @return [Boolean]
|
65
|
+
def compression?
|
66
|
+
compression_settings.any?
|
67
|
+
end
|
68
|
+
|
64
69
|
# @return [Boolean]
|
65
70
|
def reorder?
|
66
71
|
reorder_job.present?
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timescaledb-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iván Etchart
|
8
8
|
- Santiago Doldán
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-04-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '2.15'
|
126
|
-
description:
|
126
|
+
description:
|
127
127
|
email: oss@crunchloop.io
|
128
128
|
executables: []
|
129
129
|
extensions: []
|
@@ -144,6 +144,7 @@ files:
|
|
144
144
|
- lib/timescaledb/rails/model/hyperfunctions.rb
|
145
145
|
- lib/timescaledb/rails/model/scopes.rb
|
146
146
|
- lib/timescaledb/rails/models.rb
|
147
|
+
- lib/timescaledb/rails/models/application_record.rb
|
147
148
|
- lib/timescaledb/rails/models/chunk.rb
|
148
149
|
- lib/timescaledb/rails/models/compression_setting.rb
|
149
150
|
- lib/timescaledb/rails/models/concerns/durationable.rb
|
@@ -159,7 +160,7 @@ licenses:
|
|
159
160
|
- MIT
|
160
161
|
metadata:
|
161
162
|
rubygems_mfa_required: 'true'
|
162
|
-
post_install_message:
|
163
|
+
post_install_message:
|
163
164
|
rdoc_options: []
|
164
165
|
require_paths:
|
165
166
|
- lib
|
@@ -174,8 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
174
175
|
- !ruby/object:Gem::Version
|
175
176
|
version: '0'
|
176
177
|
requirements: []
|
177
|
-
rubygems_version: 3.
|
178
|
-
signing_key:
|
178
|
+
rubygems_version: 3.3.7
|
179
|
+
signing_key:
|
179
180
|
specification_version: 4
|
180
181
|
summary: TimescaleDB Rails integration
|
181
182
|
test_files: []
|