gravis-acts_as_archive 0.2.6 → 0.2.7
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.
- data/lib/acts_as_archive/base.rb +1 -1
- data/lib/acts_as_archive/base/adapters/mysql.rb +2 -2
- data/lib/acts_as_archive/base/adapters/postgresql.rb +1 -1
- data/lib/acts_as_archive/base/table.rb +9 -25
- data/require.rb +1 -1
- data/spec/acts_as_archive/base/table_spec.rb +2 -2
- data/spec/acts_as_archive/base_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +4 -4
data/lib/acts_as_archive/base.rb
CHANGED
@@ -14,7 +14,7 @@ module ActsAsArchive
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.archive_indexes
|
17
|
-
#{Array(options[:indexes]).map{|index| index.is_a?(Array) ? index.map(&:
|
17
|
+
#{Array(options[:indexes]).map{|index| index.is_a?(Array) ? index.map(&:to_sym) : index.to_sym}.inspect}
|
18
18
|
end
|
19
19
|
|
20
20
|
class Archive < ActiveRecord::Base
|
@@ -12,9 +12,9 @@ module ActsAsArchive
|
|
12
12
|
current_index = 0
|
13
13
|
indexes.each do |index|
|
14
14
|
if index['Seq_in_index'] != '1'
|
15
|
-
final_indexes[current_index-1] = Array(final_indexes[current_index-1]).flatten.concat(Array(index['Column_name']))
|
15
|
+
final_indexes[current_index-1] = Array(final_indexes[current_index-1]).flatten.concat(Array(index['Column_name']).to_sym)
|
16
16
|
else
|
17
|
-
final_indexes[current_index] = index['Column_name']
|
17
|
+
final_indexes[current_index] = index['Column_name'].to_sym
|
18
18
|
current_index += 1
|
19
19
|
end
|
20
20
|
end
|
@@ -34,7 +34,7 @@ order by
|
|
34
34
|
SQL
|
35
35
|
|
36
36
|
indexes = connection.select_all(index_query).collect do |r|
|
37
|
-
r["column_names"].split(", ").size > 1 ? r["column_names"].split(", ") : r["column_names"]
|
37
|
+
r["column_names"].split(", ").size > 1 ? r["column_names"].split(", ").map(&:to_sym) : r["column_names"].to_sym
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
@@ -43,18 +43,10 @@ module ActsAsArchive
|
|
43
43
|
indexes = archive_table_indexed_columns
|
44
44
|
|
45
45
|
(archive_indexes - indexes).each do |index|
|
46
|
-
|
47
|
-
connection.add_index("archived_#{table_name}", index)
|
48
|
-
rescue ActiveRecord::StatementInvalid => e
|
49
|
-
Rails.logger.warn "Can't add index : #{index.inspect} on #{table_name} (#{e.to_s})"
|
50
|
-
end
|
46
|
+
connection.add_index("archived_#{table_name}", index, :name => index_name_for(table_name, index)) if table_has_columns(index)
|
51
47
|
end
|
52
48
|
(indexes - archive_indexes).each do |index|
|
53
|
-
|
54
|
-
connection.remove_index("archived_#{table_name}", index)
|
55
|
-
rescue ActiveRecord::StatementInvalid => e
|
56
|
-
Rails.logger.warn "Can't remove index : #{index.inspect} on #{table_name} (#{e.to_s})"
|
57
|
-
end
|
49
|
+
connection.remove_index("archived_#{table_name}", index) if table_has_columns(index)
|
58
50
|
end
|
59
51
|
end
|
60
52
|
end
|
@@ -74,21 +66,13 @@ module ActsAsArchive
|
|
74
66
|
|
75
67
|
private
|
76
68
|
|
77
|
-
def
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
when "ActiveRecord::ConnectionAdapters::PostgreSQLAdapter"
|
85
|
-
index_query = "SELECT indexname FROM pg_indexes WHERE tablename = '#{table_name}'"
|
86
|
-
indexes = connection.select_all(index_query).collect do |r|
|
87
|
-
r["indexname"].split("_on_").last.split("_and_")
|
88
|
-
end
|
89
|
-
else
|
90
|
-
raise "Unsupported Database"
|
91
|
-
end
|
69
|
+
def table_has_columns(columns)
|
70
|
+
self::Archive.reset_column_information
|
71
|
+
!Array(columns).select {|current_column| self::Archive.column_names.include?(current_column.to_s)}.empty?
|
72
|
+
end
|
73
|
+
|
74
|
+
def index_name_for(table_name, index)
|
75
|
+
"index_by_#{Array(index).join("_and_")}".to_sym if "index_archived_#{table_name}_on_#{Array(index).join("_and_")}".length > 63
|
92
76
|
end
|
93
77
|
end
|
94
78
|
|
data/require.rb
CHANGED
@@ -36,13 +36,13 @@ describe ActsAsArchive::Base::Table do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should create archive indexes" do
|
39
|
-
indexes.to_set.should == [
|
39
|
+
indexes.to_set.should == [ :id, [:subject_id, :subject_type], :deleted_at, :column_that_does_not_exist_yet ].to_set
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should destroy archive indexes" do
|
43
43
|
Article.class_eval { acts_as_archive }
|
44
44
|
Article.create_archive_indexes
|
45
|
-
indexes.should == [
|
45
|
+
indexes.should == [:column_that_does_not_exist_yet]
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -14,7 +14,7 @@ describe ActsAsArchive::Base do
|
|
14
14
|
|
15
15
|
it "should add self.archive_indexes to the model" do
|
16
16
|
Article.respond_to?(:archive_indexes).should == true
|
17
|
-
Article.archive_indexes.should == [
|
17
|
+
Article.archive_indexes.should == [ :id, [ :subject_id, :subject_type ], :deleted_at ]
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should add Archive class to the model" do
|
data/spec/spec_helper.rb
CHANGED
@@ -80,7 +80,7 @@ def establish_test_db
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def indexes
|
83
|
-
Article.send(:archive_table_indexed_columns).concat([
|
83
|
+
Article.send(:archive_table_indexed_columns).concat([:column_that_does_not_exist_yet])
|
84
84
|
end
|
85
85
|
|
86
86
|
def migrate_up(directory='migrate')
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gravis-acts_as_archive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 7
|
10
|
+
version: 0.2.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Winton Welsh
|
@@ -16,7 +16,7 @@ bindir: bin
|
|
16
16
|
cert_chain: []
|
17
17
|
|
18
18
|
date: 2010-05-31 00:00:00 +02:00
|
19
|
-
default_executable:
|
19
|
+
default_executable: acts_as_archive
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: require
|