active_metadata 0.3.2 → 0.4.1
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/db/migrate/02_active_metadata_migrations.rb +3 -0
- data/db/test.sqlite3 +0 -0
- data/lib/active_metadata/base.rb +8 -4
- data/lib/active_metadata/persistence/active_record/attachment.rb +2 -2
- data/lib/active_metadata/persistence/active_record/history.rb +2 -2
- data/lib/active_metadata/persistence/active_record/note.rb +2 -2
- data/lib/active_metadata/persistence/active_record/watcher.rb +3 -3
- data/lib/active_metadata/version.rb +1 -1
- data/lib/rails/railties/tasks.rake +1 -1
- data/lib/templates/active_metadata_migrations +4 -0
- data/spec/active_metadata_spec.rb +14 -2
- data/spec/support/section.rb +1 -1
- metadata +20 -21
- data/db/development.sqlite3 +0 -0
@@ -14,6 +14,7 @@ class ActiveMetadataMigrations < ActiveRecord::Migration
|
|
14
14
|
add_index :notes, :document_id
|
15
15
|
add_index :notes, :label
|
16
16
|
add_index :notes, :updated_at
|
17
|
+
add_index :notes, :document_class
|
17
18
|
|
18
19
|
create_table :histories do |t|
|
19
20
|
t.text :value
|
@@ -27,6 +28,7 @@ class ActiveMetadataMigrations < ActiveRecord::Migration
|
|
27
28
|
add_index :histories, :document_id
|
28
29
|
add_index :histories, :label
|
29
30
|
add_index :histories, :created_at
|
31
|
+
add_index :histories, :document_class
|
30
32
|
|
31
33
|
create_table :attachments do |t|
|
32
34
|
t.string :label
|
@@ -45,6 +47,7 @@ class ActiveMetadataMigrations < ActiveRecord::Migration
|
|
45
47
|
add_index :attachments, :document_id
|
46
48
|
add_index :attachments, :label
|
47
49
|
add_index :attachments, :attach_updated_at
|
50
|
+
add_index :attachments, :document_class
|
48
51
|
|
49
52
|
create_table :watchers do |t|
|
50
53
|
t.integer :owner_id
|
data/db/test.sqlite3
CHANGED
Binary file
|
data/lib/active_metadata/base.rb
CHANGED
@@ -24,7 +24,7 @@ module ActiveMetadata
|
|
24
24
|
attr_accessor :conflicts
|
25
25
|
attr_accessor :active_metadata_timestamp
|
26
26
|
|
27
|
-
class_variable_set("@@
|
27
|
+
class_variable_set("@@active_metadata_ancestors", args.empty? ? nil : args[0][:active_metadata_ancestors])
|
28
28
|
|
29
29
|
include ActiveMetadata::Base::InstanceMethods
|
30
30
|
include ActiveMetadata::Persistence
|
@@ -58,6 +58,10 @@ module ActiveMetadata
|
|
58
58
|
metadata_root.id
|
59
59
|
end
|
60
60
|
|
61
|
+
def metadata_class
|
62
|
+
metadata_root.class.to_s
|
63
|
+
end
|
64
|
+
|
61
65
|
# Normalize the active_metadata_timestamp into a float to be comparable with the history
|
62
66
|
def am_timestamp
|
63
67
|
ts = metadata_root.active_metadata_timestamp
|
@@ -74,10 +78,10 @@ module ActiveMetadata
|
|
74
78
|
end
|
75
79
|
|
76
80
|
def metadata_root
|
77
|
-
|
78
|
-
return self if
|
81
|
+
active_metadata_ancestors = self.class.class_variable_get("@@active_metadata_ancestors")
|
82
|
+
return self if active_metadata_ancestors.nil?
|
79
83
|
receiver = self
|
80
|
-
|
84
|
+
active_metadata_ancestors.each do |item|
|
81
85
|
receiver = receiver.send item
|
82
86
|
end
|
83
87
|
receiver
|
@@ -7,7 +7,7 @@ module ActiveMetadata::Persistence::ActiveRecord::Attachment
|
|
7
7
|
module InstanceMethods
|
8
8
|
|
9
9
|
def save_attachment_for(field, file)
|
10
|
-
attachment = Attachment.create! :document_id => metadata_id, :label => field, :attach => file, :created_by => current_user_id
|
10
|
+
attachment = Attachment.create! :document_class => metadata_class, :document_id => metadata_id, :label => field, :attach => file, :created_by => current_user_id
|
11
11
|
reload_attachments_cache_for field
|
12
12
|
self.send(:send_notification, field, "", attachment.attach.original_filename, :attachment_message, current_user_id)
|
13
13
|
end
|
@@ -49,7 +49,7 @@ module ActiveMetadata::Persistence::ActiveRecord::Attachment
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def fetch_attachments_for field
|
52
|
-
Attachment.all(:conditions => {:document_id => metadata_id,:label => field}, :order => "attach_updated_at DESC")
|
52
|
+
Attachment.all(:conditions => {:document_class => metadata_class, :document_id => metadata_id,:label => field}, :order => "attach_updated_at DESC")
|
53
53
|
end
|
54
54
|
|
55
55
|
|
@@ -9,7 +9,7 @@ module ActiveMetadata::Persistence::ActiveRecord::History
|
|
9
9
|
def save_history
|
10
10
|
self.changes.each do |key, value|
|
11
11
|
next if ActiveMetadata::CONFIG['history_skip_fields'].include?(key)
|
12
|
-
History.create! :value => value[1],:document_id => metadata_id,:label => key.to_s, :created_by => current_user_id
|
12
|
+
History.create! :value => value[1],:document_class => metadata_class, :document_id => metadata_id,:label => key.to_s, :created_by => current_user_id
|
13
13
|
invalidate_history_cache_for key.to_s
|
14
14
|
self.send(:send_notification, key, value[0], value[1], :history_message,current_user_id)
|
15
15
|
end
|
@@ -28,7 +28,7 @@ module ActiveMetadata::Persistence::ActiveRecord::History
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def fetch_histories_for field, order
|
31
|
-
History.all(:conditions => {:document_id => metadata_id,:label => field}, :order => order)
|
31
|
+
History.all(:conditions => {:document_class => metadata_class, :document_id => metadata_id,:label => field}, :order => order)
|
32
32
|
end
|
33
33
|
|
34
34
|
|
@@ -7,7 +7,7 @@ module ActiveMetadata::Persistence::ActiveRecord::Note
|
|
7
7
|
module InstanceMethods
|
8
8
|
|
9
9
|
def create_note_for(field, note)
|
10
|
-
Note.create! :document_id => metadata_id
|
10
|
+
Note.create! :document_id => metadata_id, :document_class => metadata_class, :label => field.to_s,:note => note, :created_by => current_user_id
|
11
11
|
reload_notes_cache_for field
|
12
12
|
self.send(:send_notification, field, "", note, :note_message, current_user_id)
|
13
13
|
end
|
@@ -53,7 +53,7 @@ module ActiveMetadata::Persistence::ActiveRecord::Note
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def fetch_notes_for field
|
56
|
-
Note.all(:conditions => {:label => field, :document_id => metadata_id}, :order => "updated_at DESC" )
|
56
|
+
Note.all(:conditions => {:label => field, :document_class => metadata_class, :document_id => metadata_id}, :order => "updated_at DESC" )
|
57
57
|
end
|
58
58
|
|
59
59
|
end
|
@@ -7,11 +7,11 @@ module ActiveMetadata::Persistence::ActiveRecord::Watcher
|
|
7
7
|
module InstanceMethods
|
8
8
|
def create_watcher_for(field, owner)
|
9
9
|
raise RuntimeError, "The object id MUST be valued" unless self.id
|
10
|
-
Watcher.create! :document_id => metadata_id, :label => field, :owner_id => owner.id
|
10
|
+
Watcher.create! :document_class => metadata_class, :document_id => metadata_id, :label => field, :owner_id => owner.id
|
11
11
|
end
|
12
12
|
|
13
13
|
def watchers_for(field)
|
14
|
-
Watcher.all(:conditions => {:label => field, :document_id => metadata_id})
|
14
|
+
Watcher.all(:conditions => {:document_class => metadata_class, :label => field, :document_id => metadata_id})
|
15
15
|
end
|
16
16
|
|
17
17
|
def delete_watcher_for(field, owner)
|
@@ -21,7 +21,7 @@ module ActiveMetadata::Persistence::ActiveRecord::Watcher
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def is_watched_by(field,owner)
|
24
|
-
Watcher.where(:document_id => metadata_id, :label => field, :owner_id => owner.id).empty? ? false : true
|
24
|
+
Watcher.where(:document_class => metadata_class, :document_id => metadata_id, :label => field, :owner_id => owner.id).empty? ? false : true
|
25
25
|
end
|
26
26
|
|
27
27
|
def send_notification(field, old_value, new_value, type=:default_message, created_by=nil)
|
@@ -8,7 +8,7 @@ namespace :active_metadata do
|
|
8
8
|
|
9
9
|
puts "Copying migrations"
|
10
10
|
ts = Time.now.utc.strftime('%Y%m%d%H%M%S')
|
11
|
-
FileUtils.cp File.expand_path('
|
11
|
+
FileUtils.cp File.expand_path('../../../db/migrate/02_active_metadata_migrations.rb',__FILE__), File.expand_path("db/migrate/#{ts}_active_metadata_migrations.rb")
|
12
12
|
puts "run rake db:migrate to complete the gem installation"
|
13
13
|
|
14
14
|
end
|
@@ -4,6 +4,7 @@ class ActiveMetadataMigrations < ActiveRecord::Migration
|
|
4
4
|
create_table :notes do |t|
|
5
5
|
t.text :note
|
6
6
|
t.string :label
|
7
|
+
t.string :document_class
|
7
8
|
t.integer :document_id
|
8
9
|
t.integer :created_by
|
9
10
|
t.integer :updated_by
|
@@ -17,6 +18,7 @@ class ActiveMetadataMigrations < ActiveRecord::Migration
|
|
17
18
|
create_table :histories do |t|
|
18
19
|
t.text :value
|
19
20
|
t.string :label
|
21
|
+
t.string :document_class
|
20
22
|
t.integer :document_id
|
21
23
|
t.integer :created_by
|
22
24
|
t.timestamps
|
@@ -29,6 +31,7 @@ class ActiveMetadataMigrations < ActiveRecord::Migration
|
|
29
31
|
create_table :attachments do |t|
|
30
32
|
t.string :label
|
31
33
|
t.integer :document_id
|
34
|
+
t.string :document_class
|
32
35
|
t.integer :created_by
|
33
36
|
t.integer :updated_by
|
34
37
|
t.integer :counter
|
@@ -46,6 +49,7 @@ class ActiveMetadataMigrations < ActiveRecord::Migration
|
|
46
49
|
create_table :watchers do |t|
|
47
50
|
t.integer :owner_id
|
48
51
|
t.string :label
|
52
|
+
t.string :document_class
|
49
53
|
t.integer :document_id
|
50
54
|
t.timestamps
|
51
55
|
end
|
@@ -10,18 +10,20 @@ describe ActiveMetadata do
|
|
10
10
|
Document.respond_to?(:acts_as_metadata).should be_true
|
11
11
|
end
|
12
12
|
|
13
|
-
it "should find the
|
13
|
+
it "should find the active_metadata_ancestors if no active_metadata_ancestors params has been provided" do
|
14
14
|
@document = Document.create! { |d| d.name = "John" }
|
15
15
|
@document.reload
|
16
16
|
@document.metadata_id.should eq @document.id
|
17
|
+
@document.metadata_class.should eq @document.class.to_s
|
17
18
|
end
|
18
19
|
|
19
|
-
it "should find the
|
20
|
+
it "should find the metadata_root.id if an active_metadata_ancestors params has been specified" do
|
20
21
|
@document = Document.create! { |d| d.name = "John" }
|
21
22
|
@document.reload
|
22
23
|
@section = @document.create_section :title => "new section"
|
23
24
|
@section.reload
|
24
25
|
@section.metadata_id.should eq @document.id
|
26
|
+
@section.metadata_class.should eq @document.class.to_s
|
25
27
|
end
|
26
28
|
|
27
29
|
end
|
@@ -38,11 +40,17 @@ describe ActiveMetadata do
|
|
38
40
|
@document.notes_for(:name).should have(1).record
|
39
41
|
end
|
40
42
|
|
43
|
+
|
41
44
|
it "should verify the content of a note created" do
|
42
45
|
@document.create_note_for(:name, "Very important note!")
|
43
46
|
@document.notes_for(:name).last.note.should eq "Very important note!"
|
44
47
|
end
|
45
48
|
|
49
|
+
it "should verify that notes are created for the correct model" do
|
50
|
+
@document.create_note_for(:name, "Very important note!")
|
51
|
+
@document.notes_for(:name).last.document_class.should eq(@document.class.to_s)
|
52
|
+
end
|
53
|
+
|
46
54
|
it "should verify the created_by of a note created" do
|
47
55
|
@document.create_note_for(:name, "Very important note!")
|
48
56
|
@document.notes_for(:name).last.created_by.should eq User.current.id
|
@@ -189,6 +197,10 @@ describe ActiveMetadata do
|
|
189
197
|
@document.history_for(:name)[0].value.should eq(@document.name)
|
190
198
|
end
|
191
199
|
|
200
|
+
it "should verify that histories are created for the correct model" do
|
201
|
+
@document.history_for(:name)[0].document_class.should eq(@document.class.to_s)
|
202
|
+
end
|
203
|
+
|
192
204
|
it "should save the craeted_at datetime anytime an history entry is created" do
|
193
205
|
@document.history_for(:name)[0].created_at.should be_a_kind_of Time
|
194
206
|
end
|
data/spec/support/section.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_metadata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-11-02 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec-rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &2154399200 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2154399200
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: sqlite3
|
28
|
-
requirement: &
|
28
|
+
requirement: &2154398660 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2154398660
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: sqlite3-ruby
|
39
|
-
requirement: &
|
39
|
+
requirement: &2154397860 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2154397860
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: cucumber
|
50
|
-
requirement: &
|
50
|
+
requirement: &2154397280 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2154397280
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: ci_reporter
|
61
|
-
requirement: &
|
61
|
+
requirement: &2154396700 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2154396700
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rails
|
72
|
-
requirement: &
|
72
|
+
requirement: &2154395740 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - =
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 3.0.1
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *2154395740
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: activerecord
|
83
|
-
requirement: &
|
83
|
+
requirement: &2154395100 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - =
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: 3.0.1
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *2154395100
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: paperclip
|
94
|
-
requirement: &
|
94
|
+
requirement: &2154394040 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: '0'
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *2154394040
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: to_xls
|
105
|
-
requirement: &
|
105
|
+
requirement: &2154392820 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ! '>='
|
@@ -110,7 +110,7 @@ dependencies:
|
|
110
110
|
version: '0'
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *2154392820
|
114
114
|
description: First implementation will write metadata on mongodb
|
115
115
|
email:
|
116
116
|
- acampolonghi@gmail.com
|
@@ -164,7 +164,6 @@ files:
|
|
164
164
|
- config/initializers/inflections.rb
|
165
165
|
- config/mongoid.yml
|
166
166
|
- config/routes.rb
|
167
|
-
- db/development.sqlite3
|
168
167
|
- db/migrate/01_create_test_resources.rb
|
169
168
|
- db/migrate/02_active_metadata_migrations.rb
|
170
169
|
- db/test.sqlite3
|
data/db/development.sqlite3
DELETED
Binary file
|