chrono_model 1.2.2 → 2.0.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 +4 -4
- data/LICENSE +19 -20
- data/README.md +62 -40
- data/lib/active_record/connection_adapters/chronomodel_adapter.rb +17 -11
- data/lib/active_record/tasks/chronomodel_database_tasks.rb +64 -23
- data/lib/chrono_model/adapter/ddl.rb +168 -153
- data/lib/chrono_model/adapter/indexes.rb +99 -94
- data/lib/chrono_model/adapter/migrations.rb +81 -104
- data/lib/chrono_model/adapter/migrations_modules/legacy.rb +41 -0
- data/lib/chrono_model/adapter/migrations_modules/stable.rb +41 -0
- data/lib/chrono_model/adapter/tsrange.rb +20 -5
- data/lib/chrono_model/adapter/upgrade.rb +89 -91
- data/lib/chrono_model/adapter.rb +64 -31
- data/lib/chrono_model/chrono.rb +17 -0
- data/lib/chrono_model/conversions.rb +15 -9
- data/lib/chrono_model/db_console.rb +9 -0
- data/lib/chrono_model/json.rb +9 -6
- data/lib/chrono_model/patches/as_of_time_holder.rb +2 -2
- data/lib/chrono_model/patches/as_of_time_relation.rb +2 -2
- data/lib/chrono_model/patches/association.rb +15 -12
- data/lib/chrono_model/patches/batches.rb +17 -0
- data/lib/chrono_model/patches/db_console.rb +20 -4
- data/lib/chrono_model/patches/join_node.rb +4 -4
- data/lib/chrono_model/patches/preloader.rb +41 -11
- data/lib/chrono_model/patches/relation.rb +53 -8
- data/lib/chrono_model/patches.rb +3 -1
- data/lib/chrono_model/railtie.rb +29 -24
- data/lib/chrono_model/time_gate.rb +3 -3
- data/lib/chrono_model/time_machine/history_model.rb +65 -31
- data/lib/chrono_model/time_machine/time_query.rb +65 -49
- data/lib/chrono_model/time_machine/timeline.rb +52 -28
- data/lib/chrono_model/time_machine.rb +66 -25
- data/lib/chrono_model/utilities.rb +3 -3
- data/lib/chrono_model/version.rb +3 -1
- data/lib/chrono_model.rb +31 -36
- metadata +39 -136
- data/.gitignore +0 -21
- data/.rspec +0 -2
- data/.travis.yml +0 -41
- data/Gemfile +0 -4
- data/README.sql +0 -161
- data/Rakefile +0 -25
- data/chrono_model.gemspec +0 -33
- data/gemfiles/rails_5.0.gemfile +0 -6
- data/gemfiles/rails_5.1.gemfile +0 -6
- data/gemfiles/rails_5.2.gemfile +0 -6
- data/spec/aruba/dbconsole_spec.rb +0 -25
- data/spec/aruba/fixtures/database_with_default_username_and_password.yml +0 -14
- data/spec/aruba/fixtures/database_without_username_and_password.yml +0 -11
- data/spec/aruba/fixtures/empty_structure.sql +0 -27
- data/spec/aruba/fixtures/migrations/56/20160812190335_create_impressions.rb +0 -10
- data/spec/aruba/fixtures/migrations/56/20171115195229_add_temporal_extension_to_impressions.rb +0 -10
- data/spec/aruba/fixtures/railsapp/config/application.rb +0 -17
- data/spec/aruba/fixtures/railsapp/config/boot.rb +0 -5
- data/spec/aruba/fixtures/railsapp/config/environments/development.rb +0 -38
- data/spec/aruba/migrations_spec.rb +0 -48
- data/spec/aruba/rake_task_spec.rb +0 -71
- data/spec/chrono_model/adapter/base_spec.rb +0 -157
- data/spec/chrono_model/adapter/ddl_spec.rb +0 -243
- data/spec/chrono_model/adapter/indexes_spec.rb +0 -72
- data/spec/chrono_model/adapter/migrations_spec.rb +0 -312
- data/spec/chrono_model/conversions_spec.rb +0 -43
- data/spec/chrono_model/history_models_spec.rb +0 -32
- data/spec/chrono_model/json_ops_spec.rb +0 -59
- data/spec/chrono_model/time_machine/as_of_spec.rb +0 -188
- data/spec/chrono_model/time_machine/changes_spec.rb +0 -50
- data/spec/chrono_model/time_machine/counter_cache_race_spec.rb +0 -46
- data/spec/chrono_model/time_machine/default_scope_spec.rb +0 -37
- data/spec/chrono_model/time_machine/history_spec.rb +0 -104
- data/spec/chrono_model/time_machine/keep_cool_spec.rb +0 -27
- data/spec/chrono_model/time_machine/manipulations_spec.rb +0 -84
- data/spec/chrono_model/time_machine/model_identification_spec.rb +0 -46
- data/spec/chrono_model/time_machine/sequence_spec.rb +0 -74
- data/spec/chrono_model/time_machine/sti_spec.rb +0 -100
- data/spec/chrono_model/time_machine/time_query_spec.rb +0 -261
- data/spec/chrono_model/time_machine/timeline_spec.rb +0 -63
- data/spec/chrono_model/time_machine/timestamps_spec.rb +0 -43
- data/spec/chrono_model/time_machine/transactions_spec.rb +0 -69
- data/spec/config.travis.yml +0 -5
- data/spec/config.yml.example +0 -9
- data/spec/spec_helper.rb +0 -33
- data/spec/support/adapter/helpers.rb +0 -53
- data/spec/support/adapter/structure.rb +0 -44
- data/spec/support/aruba.rb +0 -44
- data/spec/support/connection.rb +0 -70
- data/spec/support/matchers/base.rb +0 -56
- data/spec/support/matchers/column.rb +0 -99
- data/spec/support/matchers/function.rb +0 -79
- data/spec/support/matchers/index.rb +0 -69
- data/spec/support/matchers/schema.rb +0 -39
- data/spec/support/matchers/table.rb +0 -275
- data/spec/support/time_machine/helpers.rb +0 -47
- data/spec/support/time_machine/structure.rb +0 -111
- data/sql/json_ops.sql +0 -56
- data/sql/uninstall-json_ops.sql +0 -24
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'chrono_model/time_machine/time_query'
|
|
2
4
|
require 'chrono_model/time_machine/timeline'
|
|
3
5
|
require 'chrono_model/time_machine/history_model'
|
|
4
6
|
|
|
5
7
|
module ChronoModel
|
|
6
|
-
|
|
7
8
|
module TimeMachine
|
|
8
9
|
include ChronoModel::Patches::AsOfTimeHolder
|
|
9
10
|
|
|
@@ -11,20 +12,50 @@ module ChronoModel
|
|
|
11
12
|
|
|
12
13
|
included do
|
|
13
14
|
if table_exists? && !chrono?
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
logger.warn <<-MSG.squish
|
|
16
|
+
ChronoModel: #{table_name} is not a temporal table.
|
|
17
|
+
Please use `change_table :#{table_name}, temporal: true` in a migration.
|
|
18
|
+
MSG
|
|
16
19
|
end
|
|
17
20
|
|
|
18
21
|
history = ChronoModel::TimeMachine.define_history_model_for(self)
|
|
19
22
|
ChronoModel.history_models[table_name] = history
|
|
20
23
|
|
|
21
24
|
class << self
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
if Rails.version >= '7.0'
|
|
26
|
+
def subclasses(with_history: false)
|
|
27
|
+
subclasses = super()
|
|
28
|
+
subclasses.reject!(&:history?) unless with_history
|
|
29
|
+
subclasses
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def subclasses_with_history
|
|
33
|
+
subclasses(with_history: true)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# `direct_descendants` is deprecated method in 7.0 and has been
|
|
37
|
+
# removed in 7.1
|
|
38
|
+
if method_defined?(:direct_descendants)
|
|
39
|
+
alias_method :direct_descendants_with_history, :subclasses_with_history
|
|
40
|
+
alias_method :direct_descendants, :subclasses
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Ruby 3.1 has a native subclasses method and descendants is
|
|
44
|
+
# implemented with recursion of subclasses
|
|
45
|
+
if Class.method_defined?(:subclasses)
|
|
46
|
+
def descendants_with_history
|
|
47
|
+
subclasses_with_history.concat(subclasses.flat_map(&:descendants_with_history))
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
else
|
|
51
|
+
alias_method :descendants_with_history, :descendants
|
|
52
|
+
|
|
53
|
+
alias_method :direct_descendants_with_history, :direct_descendants
|
|
54
|
+
def direct_descendants
|
|
55
|
+
direct_descendants_with_history.reject(&:history?)
|
|
56
|
+
end
|
|
25
57
|
end
|
|
26
58
|
|
|
27
|
-
alias_method :descendants_with_history, :descendants
|
|
28
59
|
def descendants
|
|
29
60
|
descendants_with_history.reject(&:history?)
|
|
30
61
|
end
|
|
@@ -43,9 +74,9 @@ module ChronoModel
|
|
|
43
74
|
# Sadly, we can't avoid it by calling +.history?+, because in the
|
|
44
75
|
# subclass the HistoryModel hasn't been included yet.
|
|
45
76
|
#
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
77
|
+
return if subclass.name.nil?
|
|
78
|
+
|
|
79
|
+
ChronoModel::TimeMachine.define_history_model_for(subclass)
|
|
49
80
|
end
|
|
50
81
|
end
|
|
51
82
|
end
|
|
@@ -71,21 +102,23 @@ module ChronoModel
|
|
|
71
102
|
|
|
72
103
|
# Returns an ActiveRecord::Relation on the history of this model as
|
|
73
104
|
# it was +time+ ago.
|
|
74
|
-
|
|
75
|
-
history.as_of(time)
|
|
76
|
-
end
|
|
105
|
+
delegate :as_of, to: :history
|
|
77
106
|
|
|
78
107
|
def attribute_names_for_history_changes
|
|
79
108
|
@attribute_names_for_history_changes ||= attribute_names -
|
|
80
|
-
|
|
109
|
+
%w[id hid validity recorded_at]
|
|
81
110
|
end
|
|
82
111
|
|
|
83
112
|
def has_timeline(options)
|
|
84
113
|
changes = options.delete(:changes)
|
|
85
114
|
assocs = history.has_timeline(options)
|
|
86
115
|
|
|
87
|
-
attributes =
|
|
88
|
-
|
|
116
|
+
attributes =
|
|
117
|
+
if changes.present?
|
|
118
|
+
Array.wrap(changes)
|
|
119
|
+
else
|
|
120
|
+
assocs.map(&:name)
|
|
121
|
+
end
|
|
89
122
|
|
|
90
123
|
attribute_names_for_history_changes.concat(attributes.map(&:to_s))
|
|
91
124
|
end
|
|
@@ -112,7 +145,7 @@ module ChronoModel
|
|
|
112
145
|
# reasons, to avoid a `rescue` (@lleirborras).
|
|
113
146
|
#
|
|
114
147
|
def _as_of(time)
|
|
115
|
-
self.class.as_of(time).where(id:
|
|
148
|
+
self.class.as_of(time).where(id: id)
|
|
116
149
|
end
|
|
117
150
|
protected :_as_of
|
|
118
151
|
|
|
@@ -132,13 +165,14 @@ module ChronoModel
|
|
|
132
165
|
# Returns a boolean indicating whether this record is an history entry.
|
|
133
166
|
#
|
|
134
167
|
def historical?
|
|
135
|
-
|
|
168
|
+
as_of_time.present?
|
|
136
169
|
end
|
|
137
170
|
|
|
138
171
|
# Inhibit destroy of historical records
|
|
139
172
|
#
|
|
140
173
|
def destroy
|
|
141
174
|
raise ActiveRecord::ReadOnlyRecord, 'Cannot delete historical records' if historical?
|
|
175
|
+
|
|
142
176
|
super
|
|
143
177
|
end
|
|
144
178
|
|
|
@@ -147,7 +181,7 @@ module ChronoModel
|
|
|
147
181
|
#
|
|
148
182
|
def pred(options = {})
|
|
149
183
|
if self.class.timeline_associations.empty?
|
|
150
|
-
history.
|
|
184
|
+
history.reverse_order.second
|
|
151
185
|
else
|
|
152
186
|
return nil unless (ts = pred_timestamp(options))
|
|
153
187
|
|
|
@@ -178,7 +212,11 @@ module ChronoModel
|
|
|
178
212
|
# Returns the current history version
|
|
179
213
|
#
|
|
180
214
|
def current_version
|
|
181
|
-
|
|
215
|
+
if historical?
|
|
216
|
+
self.class.find(id)
|
|
217
|
+
else
|
|
218
|
+
self
|
|
219
|
+
end
|
|
182
220
|
end
|
|
183
221
|
|
|
184
222
|
# Returns the differences between this entry and the previous history one.
|
|
@@ -196,17 +234,20 @@ module ChronoModel
|
|
|
196
234
|
#
|
|
197
235
|
def changes_against(ref)
|
|
198
236
|
self.class.attribute_names_for_history_changes.inject({}) do |changes, attr|
|
|
199
|
-
old
|
|
237
|
+
old = ref.public_send(attr)
|
|
238
|
+
new = public_send(attr)
|
|
200
239
|
|
|
201
240
|
changes.tap do |c|
|
|
202
|
-
changed =
|
|
203
|
-
|
|
241
|
+
changed =
|
|
242
|
+
if old.respond_to?(:history_eql?)
|
|
243
|
+
!old.history_eql?(new)
|
|
244
|
+
else
|
|
245
|
+
old != new
|
|
246
|
+
end
|
|
204
247
|
|
|
205
248
|
c[attr] = [old, new] if changed
|
|
206
249
|
end
|
|
207
250
|
end
|
|
208
251
|
end
|
|
209
|
-
|
|
210
252
|
end
|
|
211
|
-
|
|
212
253
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
module ChronoModel
|
|
3
4
|
module Utilities
|
|
4
5
|
# Amends the given history item setting a different period.
|
|
5
6
|
# Useful when migrating from legacy systems.
|
|
@@ -11,7 +12,7 @@ module ChronoModel
|
|
|
11
12
|
# end
|
|
12
13
|
#
|
|
13
14
|
def amend_period!(hid, from, to)
|
|
14
|
-
unless [from, to].any? {|ts| ts.respond_to?(:zone) && ts.zone == 'UTC'}
|
|
15
|
+
unless [from, to].any? { |ts| ts.respond_to?(:zone) && ts.zone == 'UTC' }
|
|
15
16
|
raise 'Can amend history only with UTC timestamps'
|
|
16
17
|
end
|
|
17
18
|
|
|
@@ -23,5 +24,4 @@ module ChronoModel
|
|
|
23
24
|
]
|
|
24
25
|
end
|
|
25
26
|
end
|
|
26
|
-
|
|
27
27
|
end
|
data/lib/chrono_model/version.rb
CHANGED
data/lib/chrono_model.rb
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'active_record'
|
|
2
4
|
|
|
5
|
+
require 'chrono_model/chrono'
|
|
3
6
|
require 'chrono_model/conversions'
|
|
4
7
|
require 'chrono_model/patches'
|
|
5
8
|
require 'chrono_model/adapter'
|
|
@@ -7,8 +10,11 @@ require 'chrono_model/time_machine'
|
|
|
7
10
|
require 'chrono_model/time_gate'
|
|
8
11
|
require 'chrono_model/version'
|
|
9
12
|
|
|
13
|
+
require 'chrono_model/railtie' if defined?(Rails::Railtie)
|
|
14
|
+
require 'chrono_model/db_console' if defined?(Rails::DBConsole) && Rails.version < '7.1'
|
|
15
|
+
|
|
10
16
|
module ChronoModel
|
|
11
|
-
class Error < ActiveRecord::ActiveRecordError
|
|
17
|
+
class Error < ActiveRecord::ActiveRecordError # :nodoc:
|
|
12
18
|
end
|
|
13
19
|
|
|
14
20
|
# Performs structure upgrade.
|
|
@@ -17,7 +23,7 @@ module ChronoModel
|
|
|
17
23
|
connection = ActiveRecord::Base.connection
|
|
18
24
|
|
|
19
25
|
unless connection.is_a?(ChronoModel::Adapter)
|
|
20
|
-
raise ChronoModel::Error,
|
|
26
|
+
raise ChronoModel::Error, 'This database connection is not a ChronoModel::Adapter'
|
|
21
27
|
end
|
|
22
28
|
|
|
23
29
|
connection.chrono_upgrade!
|
|
@@ -27,49 +33,38 @@ module ChronoModel
|
|
|
27
33
|
# Computed upon inclusion of the +TimeMachine+ module.
|
|
28
34
|
#
|
|
29
35
|
def self.history_models
|
|
30
|
-
@_history_models||= {}
|
|
36
|
+
@_history_models ||= {}
|
|
31
37
|
end
|
|
32
38
|
end
|
|
33
39
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
end
|
|
40
|
+
ActiveSupport.on_load :active_record do
|
|
41
|
+
extend ChronoModel::Chrono
|
|
37
42
|
|
|
38
|
-
|
|
39
|
-
#
|
|
40
|
-
|
|
41
|
-
def chrono?
|
|
42
|
-
connection.is_chrono?(table_name)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
43
|
+
# Hooks into Association#scope to pass the As-Of time automatically
|
|
44
|
+
# to methods that load associated ChronoModel records.
|
|
45
|
+
ActiveRecord::Associations::Association.prepend ChronoModel::Patches::Association
|
|
45
46
|
|
|
46
|
-
# Hooks into
|
|
47
|
-
#
|
|
48
|
-
|
|
49
|
-
ActiveRecord::Associations::Association.instance_eval do
|
|
50
|
-
prepend ChronoModel::Patches::Association
|
|
51
|
-
end
|
|
47
|
+
# Hooks into Relation#build_arel to use `:joins` on your ChronoModels
|
|
48
|
+
# and join data from associated records As-Of time.
|
|
49
|
+
ActiveRecord::Relation.prepend ChronoModel::Patches::Relation
|
|
52
50
|
|
|
53
|
-
# Hooks
|
|
54
|
-
#
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
prepend ChronoModel::Patches::
|
|
58
|
-
end
|
|
51
|
+
# Hooks in two points of the AR Preloader to preload As-Of time records of
|
|
52
|
+
# associated ChronoModels. is used by `.includes`, `.preload`, and `.eager_load`.
|
|
53
|
+
ActiveRecord::Associations::Preloader.prepend ChronoModel::Patches::Preloader
|
|
54
|
+
|
|
55
|
+
ActiveRecord::Associations::Preloader::Association.prepend ChronoModel::Patches::Preloader::Association
|
|
59
56
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
ActiveRecord::Associations::Preloader.instance_eval do
|
|
64
|
-
prepend ChronoModel::Patches::Preloader
|
|
57
|
+
ActiveRecord::Associations::Preloader::ThroughAssociation.prepend ChronoModel::Patches::Preloader::ThroughAssociation
|
|
58
|
+
|
|
59
|
+
ActiveRecord::Batches::BatchEnumerator.prepend ChronoModel::Patches::Batches::BatchEnumerator
|
|
65
60
|
end
|
|
66
61
|
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
ActiveSupport.on_load :after_initialize do
|
|
63
|
+
next if Rails.application.config.active_record.schema_format == :sql
|
|
64
|
+
|
|
65
|
+
raise 'In order to use ChronoModel, set `config.active_record.schema_format` to `:sql`'
|
|
69
66
|
end
|
|
70
67
|
|
|
71
|
-
if
|
|
72
|
-
|
|
73
|
-
prepend ChronoModel::Patches::DBConsole
|
|
74
|
-
end
|
|
68
|
+
if ActiveRecord::ConnectionAdapters.respond_to?(:register)
|
|
69
|
+
ActiveRecord::ConnectionAdapters.register 'chronomodel', 'ChronoModel::Adapter', 'chrono_model/adapter'
|
|
75
70
|
end
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chrono_model
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Marcello Barnaba
|
|
8
8
|
- Peter Joseph Brindisi
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2024-01-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activerecord
|
|
@@ -17,16 +17,16 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - ">="
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: 5.0
|
|
20
|
+
version: '5.0'
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - ">="
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: 5.0
|
|
27
|
+
version: '5.0'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
|
-
name:
|
|
29
|
+
name: multi_json
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
32
|
- - ">="
|
|
@@ -40,21 +40,21 @@ dependencies:
|
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
41
|
version: '0'
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
|
-
name:
|
|
43
|
+
name: pg
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
45
45
|
requirements:
|
|
46
|
-
- - "
|
|
46
|
+
- - ">"
|
|
47
47
|
- !ruby/object:Gem::Version
|
|
48
|
-
version: '
|
|
48
|
+
version: '1.1'
|
|
49
49
|
type: :runtime
|
|
50
50
|
prerelease: false
|
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
|
52
52
|
requirements:
|
|
53
|
-
- - "
|
|
53
|
+
- - ">"
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: '
|
|
55
|
+
version: '1.1'
|
|
56
56
|
- !ruby/object:Gem::Dependency
|
|
57
|
-
name:
|
|
57
|
+
name: aruba
|
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
|
59
59
|
requirements:
|
|
60
60
|
- - ">="
|
|
@@ -68,7 +68,7 @@ dependencies:
|
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
69
|
version: '0'
|
|
70
70
|
- !ruby/object:Gem::Dependency
|
|
71
|
-
name:
|
|
71
|
+
name: bundler
|
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
|
73
73
|
requirements:
|
|
74
74
|
- - ">="
|
|
@@ -82,7 +82,7 @@ dependencies:
|
|
|
82
82
|
- !ruby/object:Gem::Version
|
|
83
83
|
version: '0'
|
|
84
84
|
- !ruby/object:Gem::Dependency
|
|
85
|
-
name:
|
|
85
|
+
name: byebug
|
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
|
87
87
|
requirements:
|
|
88
88
|
- - ">="
|
|
@@ -96,7 +96,7 @@ dependencies:
|
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
97
|
version: '0'
|
|
98
98
|
- !ruby/object:Gem::Dependency
|
|
99
|
-
name:
|
|
99
|
+
name: fuubar
|
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
|
101
101
|
requirements:
|
|
102
102
|
- - ">="
|
|
@@ -110,7 +110,7 @@ dependencies:
|
|
|
110
110
|
- !ruby/object:Gem::Version
|
|
111
111
|
version: '0'
|
|
112
112
|
- !ruby/object:Gem::Dependency
|
|
113
|
-
name:
|
|
113
|
+
name: hirb
|
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
|
115
115
|
requirements:
|
|
116
116
|
- - ">="
|
|
@@ -124,7 +124,7 @@ dependencies:
|
|
|
124
124
|
- !ruby/object:Gem::Version
|
|
125
125
|
version: '0'
|
|
126
126
|
- !ruby/object:Gem::Dependency
|
|
127
|
-
name:
|
|
127
|
+
name: pry
|
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
|
129
129
|
requirements:
|
|
130
130
|
- - ">="
|
|
@@ -138,7 +138,7 @@ dependencies:
|
|
|
138
138
|
- !ruby/object:Gem::Version
|
|
139
139
|
version: '0'
|
|
140
140
|
- !ruby/object:Gem::Dependency
|
|
141
|
-
name:
|
|
141
|
+
name: rails
|
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
|
143
143
|
requirements:
|
|
144
144
|
- - ">="
|
|
@@ -152,7 +152,7 @@ dependencies:
|
|
|
152
152
|
- !ruby/object:Gem::Version
|
|
153
153
|
version: '0'
|
|
154
154
|
- !ruby/object:Gem::Dependency
|
|
155
|
-
name:
|
|
155
|
+
name: rake
|
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
|
157
157
|
requirements:
|
|
158
158
|
- - ">="
|
|
@@ -166,7 +166,7 @@ dependencies:
|
|
|
166
166
|
- !ruby/object:Gem::Version
|
|
167
167
|
version: '0'
|
|
168
168
|
- !ruby/object:Gem::Dependency
|
|
169
|
-
name:
|
|
169
|
+
name: rspec
|
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
|
171
171
|
requirements:
|
|
172
172
|
- - ">="
|
|
@@ -180,7 +180,7 @@ dependencies:
|
|
|
180
180
|
- !ruby/object:Gem::Version
|
|
181
181
|
version: '0'
|
|
182
182
|
- !ruby/object:Gem::Dependency
|
|
183
|
-
name:
|
|
183
|
+
name: simplecov
|
|
184
184
|
requirement: !ruby/object:Gem::Requirement
|
|
185
185
|
requirements:
|
|
186
186
|
- - ">="
|
|
@@ -194,7 +194,7 @@ dependencies:
|
|
|
194
194
|
- !ruby/object:Gem::Version
|
|
195
195
|
version: '0'
|
|
196
196
|
description: Give your models as-of date temporal extensions. Built entirely for PostgreSQL
|
|
197
|
-
>= 9.
|
|
197
|
+
>= 9.4
|
|
198
198
|
email:
|
|
199
199
|
- vjt@openssl.it
|
|
200
200
|
- p.brindisi@ifad.org
|
|
@@ -202,18 +202,8 @@ executables: []
|
|
|
202
202
|
extensions: []
|
|
203
203
|
extra_rdoc_files: []
|
|
204
204
|
files:
|
|
205
|
-
- ".gitignore"
|
|
206
|
-
- ".rspec"
|
|
207
|
-
- ".travis.yml"
|
|
208
|
-
- Gemfile
|
|
209
205
|
- LICENSE
|
|
210
206
|
- README.md
|
|
211
|
-
- README.sql
|
|
212
|
-
- Rakefile
|
|
213
|
-
- chrono_model.gemspec
|
|
214
|
-
- gemfiles/rails_5.0.gemfile
|
|
215
|
-
- gemfiles/rails_5.1.gemfile
|
|
216
|
-
- gemfiles/rails_5.2.gemfile
|
|
217
207
|
- lib/active_record/connection_adapters/chronomodel_adapter.rb
|
|
218
208
|
- lib/active_record/tasks/chronomodel_database_tasks.rb
|
|
219
209
|
- lib/chrono_model.rb
|
|
@@ -221,14 +211,19 @@ files:
|
|
|
221
211
|
- lib/chrono_model/adapter/ddl.rb
|
|
222
212
|
- lib/chrono_model/adapter/indexes.rb
|
|
223
213
|
- lib/chrono_model/adapter/migrations.rb
|
|
214
|
+
- lib/chrono_model/adapter/migrations_modules/legacy.rb
|
|
215
|
+
- lib/chrono_model/adapter/migrations_modules/stable.rb
|
|
224
216
|
- lib/chrono_model/adapter/tsrange.rb
|
|
225
217
|
- lib/chrono_model/adapter/upgrade.rb
|
|
218
|
+
- lib/chrono_model/chrono.rb
|
|
226
219
|
- lib/chrono_model/conversions.rb
|
|
220
|
+
- lib/chrono_model/db_console.rb
|
|
227
221
|
- lib/chrono_model/json.rb
|
|
228
222
|
- lib/chrono_model/patches.rb
|
|
229
223
|
- lib/chrono_model/patches/as_of_time_holder.rb
|
|
230
224
|
- lib/chrono_model/patches/as_of_time_relation.rb
|
|
231
225
|
- lib/chrono_model/patches/association.rb
|
|
226
|
+
- lib/chrono_model/patches/batches.rb
|
|
232
227
|
- lib/chrono_model/patches/db_console.rb
|
|
233
228
|
- lib/chrono_model/patches/join_node.rb
|
|
234
229
|
- lib/chrono_model/patches/preloader.rb
|
|
@@ -241,59 +236,15 @@ files:
|
|
|
241
236
|
- lib/chrono_model/time_machine/timeline.rb
|
|
242
237
|
- lib/chrono_model/utilities.rb
|
|
243
238
|
- lib/chrono_model/version.rb
|
|
244
|
-
- spec/aruba/dbconsole_spec.rb
|
|
245
|
-
- spec/aruba/fixtures/database_with_default_username_and_password.yml
|
|
246
|
-
- spec/aruba/fixtures/database_without_username_and_password.yml
|
|
247
|
-
- spec/aruba/fixtures/empty_structure.sql
|
|
248
|
-
- spec/aruba/fixtures/migrations/56/20160812190335_create_impressions.rb
|
|
249
|
-
- spec/aruba/fixtures/migrations/56/20171115195229_add_temporal_extension_to_impressions.rb
|
|
250
|
-
- spec/aruba/fixtures/railsapp/config/application.rb
|
|
251
|
-
- spec/aruba/fixtures/railsapp/config/boot.rb
|
|
252
|
-
- spec/aruba/fixtures/railsapp/config/environments/development.rb
|
|
253
|
-
- spec/aruba/migrations_spec.rb
|
|
254
|
-
- spec/aruba/rake_task_spec.rb
|
|
255
|
-
- spec/chrono_model/adapter/base_spec.rb
|
|
256
|
-
- spec/chrono_model/adapter/ddl_spec.rb
|
|
257
|
-
- spec/chrono_model/adapter/indexes_spec.rb
|
|
258
|
-
- spec/chrono_model/adapter/migrations_spec.rb
|
|
259
|
-
- spec/chrono_model/conversions_spec.rb
|
|
260
|
-
- spec/chrono_model/history_models_spec.rb
|
|
261
|
-
- spec/chrono_model/json_ops_spec.rb
|
|
262
|
-
- spec/chrono_model/time_machine/as_of_spec.rb
|
|
263
|
-
- spec/chrono_model/time_machine/changes_spec.rb
|
|
264
|
-
- spec/chrono_model/time_machine/counter_cache_race_spec.rb
|
|
265
|
-
- spec/chrono_model/time_machine/default_scope_spec.rb
|
|
266
|
-
- spec/chrono_model/time_machine/history_spec.rb
|
|
267
|
-
- spec/chrono_model/time_machine/keep_cool_spec.rb
|
|
268
|
-
- spec/chrono_model/time_machine/manipulations_spec.rb
|
|
269
|
-
- spec/chrono_model/time_machine/model_identification_spec.rb
|
|
270
|
-
- spec/chrono_model/time_machine/sequence_spec.rb
|
|
271
|
-
- spec/chrono_model/time_machine/sti_spec.rb
|
|
272
|
-
- spec/chrono_model/time_machine/time_query_spec.rb
|
|
273
|
-
- spec/chrono_model/time_machine/timeline_spec.rb
|
|
274
|
-
- spec/chrono_model/time_machine/timestamps_spec.rb
|
|
275
|
-
- spec/chrono_model/time_machine/transactions_spec.rb
|
|
276
|
-
- spec/config.travis.yml
|
|
277
|
-
- spec/config.yml.example
|
|
278
|
-
- spec/spec_helper.rb
|
|
279
|
-
- spec/support/adapter/helpers.rb
|
|
280
|
-
- spec/support/adapter/structure.rb
|
|
281
|
-
- spec/support/aruba.rb
|
|
282
|
-
- spec/support/connection.rb
|
|
283
|
-
- spec/support/matchers/base.rb
|
|
284
|
-
- spec/support/matchers/column.rb
|
|
285
|
-
- spec/support/matchers/function.rb
|
|
286
|
-
- spec/support/matchers/index.rb
|
|
287
|
-
- spec/support/matchers/schema.rb
|
|
288
|
-
- spec/support/matchers/table.rb
|
|
289
|
-
- spec/support/time_machine/helpers.rb
|
|
290
|
-
- spec/support/time_machine/structure.rb
|
|
291
|
-
- sql/json_ops.sql
|
|
292
|
-
- sql/uninstall-json_ops.sql
|
|
293
239
|
homepage: https://github.com/ifad/chronomodel
|
|
294
|
-
licenses:
|
|
295
|
-
|
|
296
|
-
|
|
240
|
+
licenses:
|
|
241
|
+
- MIT
|
|
242
|
+
metadata:
|
|
243
|
+
bug_tracker_uri: https://github.com/ifad/chronomodel/issues
|
|
244
|
+
homepage_uri: https://github.com/ifad/chronomodel
|
|
245
|
+
source_code_uri: https://github.com/ifad/chronomodel
|
|
246
|
+
rubygems_mfa_required: 'true'
|
|
247
|
+
post_install_message:
|
|
297
248
|
rdoc_options: []
|
|
298
249
|
require_paths:
|
|
299
250
|
- lib
|
|
@@ -301,63 +252,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
301
252
|
requirements:
|
|
302
253
|
- - ">="
|
|
303
254
|
- !ruby/object:Gem::Version
|
|
304
|
-
version:
|
|
255
|
+
version: 2.2.2
|
|
305
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
306
257
|
requirements:
|
|
307
258
|
- - ">="
|
|
308
259
|
- !ruby/object:Gem::Version
|
|
309
260
|
version: '0'
|
|
310
261
|
requirements: []
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
signing_key:
|
|
262
|
+
rubygems_version: 3.5.3
|
|
263
|
+
signing_key:
|
|
314
264
|
specification_version: 4
|
|
315
265
|
summary: Temporal extensions (SCD Type II) for Active Record
|
|
316
|
-
test_files:
|
|
317
|
-
- spec/aruba/dbconsole_spec.rb
|
|
318
|
-
- spec/aruba/fixtures/database_with_default_username_and_password.yml
|
|
319
|
-
- spec/aruba/fixtures/database_without_username_and_password.yml
|
|
320
|
-
- spec/aruba/fixtures/empty_structure.sql
|
|
321
|
-
- spec/aruba/fixtures/migrations/56/20160812190335_create_impressions.rb
|
|
322
|
-
- spec/aruba/fixtures/migrations/56/20171115195229_add_temporal_extension_to_impressions.rb
|
|
323
|
-
- spec/aruba/fixtures/railsapp/config/application.rb
|
|
324
|
-
- spec/aruba/fixtures/railsapp/config/boot.rb
|
|
325
|
-
- spec/aruba/fixtures/railsapp/config/environments/development.rb
|
|
326
|
-
- spec/aruba/migrations_spec.rb
|
|
327
|
-
- spec/aruba/rake_task_spec.rb
|
|
328
|
-
- spec/chrono_model/adapter/base_spec.rb
|
|
329
|
-
- spec/chrono_model/adapter/ddl_spec.rb
|
|
330
|
-
- spec/chrono_model/adapter/indexes_spec.rb
|
|
331
|
-
- spec/chrono_model/adapter/migrations_spec.rb
|
|
332
|
-
- spec/chrono_model/conversions_spec.rb
|
|
333
|
-
- spec/chrono_model/history_models_spec.rb
|
|
334
|
-
- spec/chrono_model/json_ops_spec.rb
|
|
335
|
-
- spec/chrono_model/time_machine/as_of_spec.rb
|
|
336
|
-
- spec/chrono_model/time_machine/changes_spec.rb
|
|
337
|
-
- spec/chrono_model/time_machine/counter_cache_race_spec.rb
|
|
338
|
-
- spec/chrono_model/time_machine/default_scope_spec.rb
|
|
339
|
-
- spec/chrono_model/time_machine/history_spec.rb
|
|
340
|
-
- spec/chrono_model/time_machine/keep_cool_spec.rb
|
|
341
|
-
- spec/chrono_model/time_machine/manipulations_spec.rb
|
|
342
|
-
- spec/chrono_model/time_machine/model_identification_spec.rb
|
|
343
|
-
- spec/chrono_model/time_machine/sequence_spec.rb
|
|
344
|
-
- spec/chrono_model/time_machine/sti_spec.rb
|
|
345
|
-
- spec/chrono_model/time_machine/time_query_spec.rb
|
|
346
|
-
- spec/chrono_model/time_machine/timeline_spec.rb
|
|
347
|
-
- spec/chrono_model/time_machine/timestamps_spec.rb
|
|
348
|
-
- spec/chrono_model/time_machine/transactions_spec.rb
|
|
349
|
-
- spec/config.travis.yml
|
|
350
|
-
- spec/config.yml.example
|
|
351
|
-
- spec/spec_helper.rb
|
|
352
|
-
- spec/support/adapter/helpers.rb
|
|
353
|
-
- spec/support/adapter/structure.rb
|
|
354
|
-
- spec/support/aruba.rb
|
|
355
|
-
- spec/support/connection.rb
|
|
356
|
-
- spec/support/matchers/base.rb
|
|
357
|
-
- spec/support/matchers/column.rb
|
|
358
|
-
- spec/support/matchers/function.rb
|
|
359
|
-
- spec/support/matchers/index.rb
|
|
360
|
-
- spec/support/matchers/schema.rb
|
|
361
|
-
- spec/support/matchers/table.rb
|
|
362
|
-
- spec/support/time_machine/helpers.rb
|
|
363
|
-
- spec/support/time_machine/structure.rb
|
|
266
|
+
test_files: []
|
data/.gitignore
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
*.gem
|
|
2
|
-
*.rbc
|
|
3
|
-
.bundle
|
|
4
|
-
.config
|
|
5
|
-
.yardoc
|
|
6
|
-
.byebug_history
|
|
7
|
-
Gemfile.lock
|
|
8
|
-
gemfiles/*.lock
|
|
9
|
-
InstalledFiles
|
|
10
|
-
_yardoc
|
|
11
|
-
coverage
|
|
12
|
-
doc/
|
|
13
|
-
lib/bundler/man
|
|
14
|
-
pkg
|
|
15
|
-
rdoc
|
|
16
|
-
spec/reports
|
|
17
|
-
spec/config.yml
|
|
18
|
-
spec/debug.log
|
|
19
|
-
test/tmp
|
|
20
|
-
test/version_tmp
|
|
21
|
-
tmp
|
data/.rspec
DELETED