acts_as_versioner 1.0 → 1.0.3
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/VERSION +1 -1
- data/acts_as_versioner.gemspec +2 -2
- data/lib/acts_as_versioner.rb +2 -1
- data/lib/acts_as_versioner/acts_as_versioner.rb +11 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf3d13dbd86c5a13e69d319ca761ce4eb027e4a7
|
4
|
+
data.tar.gz: ac7cbac9c20887bf3ff8b23929ea2699122d5ac8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab2a1f735b7bb4b08b39c84f1617afdf0ae90b1d4280be318fa5a5ac6b4f5d852714285522292c1e8a20658d93d8bd2d24ce24024bb49446acbb3142b6222adb
|
7
|
+
data.tar.gz: 310179d467124ecc80834f36fb5003a3a2e6efe8510dde32adacaaa8068716c3571161fb3cd36250a52b20a4a27e88ada5031af421309c13d9be5b40cd14e262
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.0.3
|
data/acts_as_versioner.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "acts_as_versioner"
|
3
|
-
s.version = "1.0"
|
3
|
+
s.version = "1.0.3"
|
4
4
|
|
5
5
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
6
|
s.authors = ["Markus Hediger"]
|
7
|
-
s.date = "2018-
|
7
|
+
s.date = "2018-07-23"
|
8
8
|
s.description = "Versioning of ar tables"
|
9
9
|
s.email = "m.hed@gmx.ch"
|
10
10
|
s.extra_rdoc_files = [
|
data/lib/acts_as_versioner.rb
CHANGED
@@ -2,7 +2,8 @@ require File.dirname(__FILE__) + '/acts_as_versioner/acts_as_versioner.rb'
|
|
2
2
|
require File.dirname(__FILE__) + '/acts_as_versioner/userstamp.rb'
|
3
3
|
module ActiveRecord::Acts::Versioner
|
4
4
|
@@configurator = {
|
5
|
-
:default_versioned_class_name => '
|
5
|
+
:default_versioned_class_name => 'Version',
|
6
|
+
:default_versioned_table_name => '_versions',
|
6
7
|
:default_versioned_created_at => 'created_at',
|
7
8
|
:default_versioned_updated_at => 'updated_at',
|
8
9
|
:default_versioned_created_by => 'created_by',
|
@@ -25,8 +25,8 @@ module ActiveRecord
|
|
25
25
|
|
26
26
|
send :attr_accessor
|
27
27
|
|
28
|
-
self.versioned_class_name = options[:class_name] || "#{base_class}
|
29
|
-
self.versioned_table_name = options[:table_name] || "#{table_name_prefix}#{base_class.name.demodulize.underscore}#{ActiveRecord::Acts::Versioner::configurator[:
|
28
|
+
self.versioned_class_name = options[:class_name] || "#{base_class}#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_class_name]}"
|
29
|
+
self.versioned_table_name = options[:table_name] || "#{table_name_prefix}#{base_class.name.demodulize.underscore}#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_table_name]}#{table_name_suffix}"
|
30
30
|
self.versioned_foreign_key = options[:versioned_foreign_key] || "#{table_name_prefix}#{base_class.name.demodulize.underscore}_id" # quick 'n' dirty fix
|
31
31
|
|
32
32
|
if block_given?
|
@@ -63,12 +63,12 @@ module ActiveRecord
|
|
63
63
|
|
64
64
|
# Returns the current version.
|
65
65
|
def get_current_version
|
66
|
-
instance_eval(self.versioned_class_name).where([self.versioned_foreign_key + ' = ?', self.id]).order("#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_updated_at]} desc, id desc").first
|
66
|
+
instance_eval(self.versioned_class_name).where([self.versioned_foreign_key + ' = ?', self.id]).order(Arel.sql("#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_updated_at]} desc, id desc")).first
|
67
67
|
end
|
68
68
|
|
69
69
|
# Returns all versions of a model.
|
70
70
|
def get_versions
|
71
|
-
instance_eval(self.versioned_class_name).where([self.versioned_foreign_key + ' = ?', self.id]).order("#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_updated_at]} asc, id asc").all
|
71
|
+
instance_eval(self.versioned_class_name).where([self.versioned_foreign_key + ' = ?', self.id]).order(Arel.sql("#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_updated_at]} asc, id asc")).all
|
72
72
|
end
|
73
73
|
|
74
74
|
# This methods returns all versions of associated tables (table that belong to the existing model).
|
@@ -77,7 +77,7 @@ module ActiveRecord
|
|
77
77
|
stack = Array.new # Stack of the same algorithm.
|
78
78
|
|
79
79
|
# Initiate algorithm with the used model
|
80
|
-
versions = instance_eval(self.versioned_class_name).where([self.versioned_foreign_key + ' = ?', self.id]).order("#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_updated_at]} asc, #{ActiveRecord::Acts::Versioner::configurator[:default_versioned_created_at]} asc").all
|
80
|
+
versions = instance_eval(self.versioned_class_name).where([self.versioned_foreign_key + ' = ?', self.id]).order(Arel.sql("#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_updated_at]} asc, #{ActiveRecord::Acts::Versioner::configurator[:default_versioned_created_at]} asc")).all
|
81
81
|
associations[self.versioned_class_name] = versions # Caching itself in the result hash
|
82
82
|
stack.push self.class => versions # Setting itself onto the stack
|
83
83
|
|
@@ -118,7 +118,7 @@ module ActiveRecord
|
|
118
118
|
}
|
119
119
|
|
120
120
|
unless foreign_ids.blank?
|
121
|
-
tmp_new_data_set = association_klass.versioned_class.where(["#{class_name.to_s.tableize.singularize.downcase}_id IN (?)", foreign_ids]).order("#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_updated_at]} asc, #{ActiveRecord::Acts::Versioner::configurator[:default_versioned_created_at]} asc").all
|
121
|
+
tmp_new_data_set = association_klass.versioned_class.where(["#{class_name.to_s.tableize.singularize.downcase}_id IN (?)", foreign_ids]).order(Arel.sql("#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_updated_at]} asc, #{ActiveRecord::Acts::Versioner::configurator[:default_versioned_created_at]} asc")).all
|
122
122
|
unless tmp_new_data_set.blank? then new_data_set.concat(tmp_new_data_set) end
|
123
123
|
end
|
124
124
|
|
@@ -168,7 +168,7 @@ module ActiveRecord
|
|
168
168
|
def prepare_versioning(mode = 0)
|
169
169
|
@acts_as_versioner_mode = mode # mode : 0 = insert, 1 = update, 2 = delete
|
170
170
|
@acts_as_versioner_model = self.dup
|
171
|
-
|
171
|
+
@acts_as_versioner_model.updated_at = Time.now
|
172
172
|
|
173
173
|
if mode == 0 && self.id != nil then @acts_as_versioner_mode = 1 end
|
174
174
|
end
|
@@ -186,6 +186,9 @@ module ActiveRecord
|
|
186
186
|
|
187
187
|
attributes[self.versioned_foreign_key] = self.id
|
188
188
|
attributes[:action] = @acts_as_versioner_mode
|
189
|
+
|
190
|
+
# Conserve the created_at field in the versions table
|
191
|
+
attributes[ActiveRecord::Acts::Versioner::configurator[:default_versioned_created_at].to_sym] = self[ActiveRecord::Acts::Versioner::configurator[:default_versioned_created_at].to_sym]
|
189
192
|
|
190
193
|
modelversion = instance_eval(self.versioned_class_name).new(attributes)
|
191
194
|
modelversion.save(:validate => false)
|
@@ -215,7 +218,7 @@ module ActiveRecord
|
|
215
218
|
|
216
219
|
# Rake migration task to create the versioned table
|
217
220
|
def create_versioned_table(create_table_options = {})
|
218
|
-
versioned_table_name = self.to_s.underscore
|
221
|
+
versioned_table_name = "#{self.to_s.underscore}#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_table_name]}"
|
219
222
|
puts table_name
|
220
223
|
# create version column in main table if it does not exist
|
221
224
|
add_column_to_table(table_name, ActiveRecord::Acts::Versioner::configurator[:default_versioned_created_at], :datetime)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_versioner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Hediger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -101,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
101
|
version: '0'
|
102
102
|
requirements: []
|
103
103
|
rubyforge_project:
|
104
|
-
rubygems_version: 2.
|
104
|
+
rubygems_version: 2.5.2
|
105
105
|
signing_key:
|
106
106
|
specification_version: 4
|
107
107
|
summary: Versioning of ar tables
|