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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4d2358c69672d8feac037526ab9513951a5ae197
4
- data.tar.gz: 848639453794e3025c584b834ebf073aca5f88c2
3
+ metadata.gz: cf3d13dbd86c5a13e69d319ca761ce4eb027e4a7
4
+ data.tar.gz: ac7cbac9c20887bf3ff8b23929ea2699122d5ac8
5
5
  SHA512:
6
- metadata.gz: ec883fcad954d7ac02bb1b1a223386f980a425a28f2cb20a0241d996337b30465771c2b58fa5deb9c475781e65c2626a0b3493bcea3e0f044caf3c1eb16e89bf
7
- data.tar.gz: 4cb7cc81cbbab950970caac6657e1dcf455b7b6be99e240ab90843d751abd271ebe54281a29d85c70927f5b4188873717faf20db1eff737379cd3a5065017fcc
6
+ metadata.gz: ab2a1f735b7bb4b08b39c84f1617afdf0ae90b1d4280be318fa5a5ac6b4f5d852714285522292c1e8a20658d93d8bd2d24ce24024bb49446acbb3142b6222adb
7
+ data.tar.gz: 310179d467124ecc80834f36fb5003a3a2e6efe8510dde32adacaaa8068716c3571161fb3cd36250a52b20a4a27e88ada5031af421309c13d9be5b40cd14e262
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0
1
+ 1.0.3
@@ -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-01-01"
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 = [
@@ -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 => '_versions',
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}Version"
29
- self.versioned_table_name = options[:table_name] || "#{table_name_prefix}#{base_class.name.demodulize.underscore}#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_class_name]}#{table_name_suffix}"
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
- @acts_as_versioner_model.updated_at = Time.now
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 + ActiveRecord::Acts::Versioner::configurator[:default_versioned_class_name]
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: '1.0'
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-01-01 00:00:00.000000000 Z
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.6.13
104
+ rubygems_version: 2.5.2
105
105
  signing_key:
106
106
  specification_version: 4
107
107
  summary: Versioning of ar tables