active_metadata 0.6.6 → 0.6.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/README.md +3 -1
- data/lib/active_metadata/persistence/attachment.rb +15 -15
- data/lib/active_metadata/persistence/history.rb +3 -3
- data/lib/active_metadata/persistence/note.rb +24 -24
- data/lib/active_metadata/streamable.rb +4 -4
- data/lib/active_metadata/version.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/lib/streamable_spec.rb +17 -2
- metadata +20 -22
- data/db/development.sqlite3 +0 -0
- data/db/test.sqlite3 +0 -0
data/README.md
CHANGED
@@ -4,6 +4,8 @@ I task di rake vengono invocati via il namespace app.
|
|
4
4
|
rake app:ci
|
5
5
|
|
6
6
|
## Issues
|
7
|
-
* The install rake task is destructive. Needs to be refactored as a
|
7
|
+
* The install rake task is destructive. Needs to be refactored as a rails generator using Thor actions.
|
8
8
|
* The install task should automount the engine as /active_metadata
|
9
|
+
* Migrations should be available to the rails app that mount the engine and not copied.
|
10
|
+
* Move the test db creation into before suite rspec callback and remove the migration from the db folder
|
9
11
|
|
@@ -8,21 +8,21 @@ module ActiveMetadata::Persistence::Attachment
|
|
8
8
|
|
9
9
|
def save_attachment_for(field, file, starred=false)
|
10
10
|
attachment = ActiveMetadata::Attachment.create! :document_class => metadata_class, :document_id => metadata_id, :label => field, :attach => file,
|
11
|
-
|
12
|
-
reload_attachments_cache_for field
|
11
|
+
:starred => starred, :created_by => current_user_id
|
12
|
+
reload_attachments_cache_for field
|
13
13
|
self.send(:send_notification, field, "", attachment.attach.original_filename, :attachment_message, current_user_id)
|
14
14
|
end
|
15
15
|
|
16
16
|
def attachments_for(field, order_by="updated_at DESC")
|
17
|
-
|
17
|
+
Rails.cache.fetch(attachments_cache_key(field), :expires_in => ActiveMetadata::CONFIG['cache_expires_in'].minutes) do
|
18
18
|
fetch_attachments_for field, nil, order_by
|
19
|
-
|
19
|
+
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def delete_attachment(id)
|
23
23
|
a = ActiveMetadata::Attachment.find(id)
|
24
24
|
filename = a.attach.original_filename
|
25
|
-
a.destroy
|
25
|
+
a.destroy
|
26
26
|
reload_attachments_cache_for a.label
|
27
27
|
self.send(:send_notification, a.label, filename, "", :attachment_message)
|
28
28
|
end
|
@@ -54,31 +54,31 @@ module ActiveMetadata::Persistence::Attachment
|
|
54
54
|
|
55
55
|
# not cached
|
56
56
|
def starred_attachments_for(field)
|
57
|
-
fetch_attachments_for field,true
|
57
|
+
fetch_attachments_for field, true
|
58
58
|
end
|
59
59
|
|
60
60
|
def star_attachment(id)
|
61
61
|
n = ActiveMetadata::Attachment.find(id)
|
62
|
-
update_attachment id,n.attach,true
|
62
|
+
update_attachment id, n.attach, true
|
63
63
|
end
|
64
64
|
|
65
65
|
def unstar_attachment(id)
|
66
66
|
n = ActiveMetadata::Attachment.find(id)
|
67
|
-
update_attachment id,n.attach,false
|
67
|
+
update_attachment id, n.attach, false
|
68
68
|
end
|
69
69
|
|
70
70
|
private
|
71
|
-
|
71
|
+
|
72
72
|
def reload_attachments_cache_for field
|
73
73
|
#Rails.cache.clear
|
74
|
-
Rails.cache.write(attachments_cache_key(field),fetch_attachments_for(field), :expires_in => ActiveMetadata::CONFIG['cache_expires_in'].minutes
|
75
|
-
end
|
76
|
-
|
74
|
+
Rails.cache.write(attachments_cache_key(field), fetch_attachments_for(field), :expires_in => ActiveMetadata::CONFIG['cache_expires_in'].minutes)
|
75
|
+
end
|
76
|
+
|
77
77
|
def fetch_attachments_for(field, starred=nil, order_by="updated_at DESC")
|
78
|
-
conditions = {:document_class => metadata_class, :document_id => metadata_id
|
78
|
+
conditions = {:document_class => metadata_class, :document_id => metadata_id, :label => field}
|
79
79
|
conditions[:starred] = starred if !starred.nil?
|
80
|
-
ActiveMetadata::Attachment.all(:conditions => conditions
|
81
|
-
end
|
80
|
+
ActiveMetadata::Attachment.all(:conditions => conditions, :order => order_by)
|
81
|
+
end
|
82
82
|
|
83
83
|
end
|
84
84
|
|
@@ -16,15 +16,15 @@ module ActiveMetadata::Persistence::History
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def history_for field, order="created_at DESC"
|
19
|
-
|
19
|
+
Rails.cache.fetch(history_cache_key(field), :expires_in => ActiveMetadata::CONFIG['cache_expires_in'].minutes) do
|
20
20
|
fetch_histories_for field, order
|
21
|
-
|
21
|
+
end
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
25
25
|
|
26
26
|
def invalidate_history_cache_for field
|
27
|
-
|
27
|
+
Rails.cache.delete history_cache_key(field)
|
28
28
|
end
|
29
29
|
|
30
30
|
def fetch_histories_for field, order
|
@@ -5,85 +5,85 @@ module ActiveMetadata::Persistence::Note
|
|
5
5
|
end
|
6
6
|
|
7
7
|
module InstanceMethods
|
8
|
-
|
8
|
+
|
9
9
|
def create_note_for(field, note, starred=false)
|
10
|
-
ActiveMetadata::Note.create! :document_id => metadata_id, :document_class => metadata_class, :label => field.to_s
|
10
|
+
ActiveMetadata::Note.create! :document_id => metadata_id, :document_class => metadata_class, :label => field.to_s, :note => note, :created_by => current_user_id, :starred => starred
|
11
11
|
|
12
12
|
reload_notes_cache_for field
|
13
|
-
self.send(:send_notification, field, "", note, :note_message, current_user_id)
|
13
|
+
self.send(:send_notification, field, "", note, :note_message, current_user_id)
|
14
14
|
end
|
15
15
|
|
16
16
|
def update_note(id, note, starred=nil)
|
17
17
|
n = ActiveMetadata::Note.find(id)
|
18
18
|
old_value = n.note
|
19
|
-
attributes =
|
19
|
+
attributes = {:note => note, :updated_by => current_user_id, :updated_at => Time.now.utc}
|
20
20
|
#mass assign starred inly if provided
|
21
21
|
unless starred.nil?
|
22
22
|
attributes[:starred] = starred
|
23
23
|
end
|
24
24
|
n.update_attributes! attributes
|
25
|
-
reload_notes_cache_for n.label
|
25
|
+
reload_notes_cache_for n.label
|
26
26
|
self.send(:send_notification, n.label, old_value, note, :note_message, current_user_id)
|
27
27
|
end
|
28
28
|
|
29
29
|
def notes_for(field, order_by="updated_at DESC")
|
30
|
-
|
30
|
+
Rails.cache.fetch(notes_cache_key(field), :expires_in => ActiveMetadata::CONFIG['cache_expires_in'].minutes) do
|
31
31
|
fetch_notes_for field, nil, order_by
|
32
|
-
|
32
|
+
end
|
33
33
|
end
|
34
34
|
|
35
35
|
def find_note_by_id(id)
|
36
36
|
ActiveMetadata::Note.find(id)
|
37
|
-
end
|
38
|
-
|
39
|
-
def create_notes_for(field,notes)
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_notes_for(field, notes)
|
40
40
|
notes.each { |note| create_note_for field, note }
|
41
41
|
end
|
42
42
|
|
43
43
|
def delete_note(id)
|
44
44
|
note = ActiveMetadata::Note.find(id)
|
45
45
|
old_value = note.note
|
46
|
-
note.destroy
|
46
|
+
note.destroy
|
47
47
|
reload_notes_cache_for note.label
|
48
48
|
self.send(:send_notification, note.label, old_value, "", :note_message)
|
49
49
|
end
|
50
|
-
|
51
|
-
def has_notes_for field
|
50
|
+
|
51
|
+
def has_notes_for field
|
52
52
|
notes_for(field).size == 0 ? false : true
|
53
53
|
end
|
54
54
|
|
55
|
-
def count_notes_for field
|
55
|
+
def count_notes_for field
|
56
56
|
notes_for(field).size
|
57
57
|
end
|
58
58
|
|
59
59
|
# not cached
|
60
60
|
def starred_notes_for(field)
|
61
|
-
fetch_notes_for field,true
|
61
|
+
fetch_notes_for field, true
|
62
62
|
end
|
63
63
|
|
64
64
|
def star_note(id)
|
65
65
|
n = ActiveMetadata::Note.find(id)
|
66
|
-
update_note id,n.note,true
|
66
|
+
update_note id, n.note, true
|
67
67
|
end
|
68
68
|
|
69
69
|
def unstar_note(id)
|
70
70
|
n = ActiveMetadata::Note.find(id)
|
71
|
-
update_note id,n.note,false
|
71
|
+
update_note id, n.note, false
|
72
72
|
end
|
73
73
|
|
74
74
|
private
|
75
|
-
|
76
|
-
def reload_notes_cache_for field
|
77
|
-
Rails.cache.write(notes_cache_key(field),fetch_notes_for(field), :expires_in => ActiveMetadata::CONFIG['cache_expires_in'].minutes
|
78
|
-
end
|
79
|
-
|
75
|
+
|
76
|
+
def reload_notes_cache_for field
|
77
|
+
Rails.cache.write(notes_cache_key(field), fetch_notes_for(field), :expires_in => ActiveMetadata::CONFIG['cache_expires_in'].minutes)
|
78
|
+
end
|
79
|
+
|
80
80
|
def fetch_notes_for(field, starred=nil, order_by="updated_at DESC")
|
81
81
|
conditions = {:label => field, :document_class => metadata_class, :document_id => metadata_id}
|
82
82
|
unless starred.nil?
|
83
83
|
conditions[:starred] = starred
|
84
84
|
end
|
85
85
|
ActiveMetadata::Note.all(:conditions => conditions, :order => order_by)
|
86
|
-
end
|
87
|
-
|
86
|
+
end
|
87
|
+
|
88
88
|
end
|
89
89
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module ActiveMetadata::Streamable
|
2
2
|
|
3
|
-
def stream_for
|
4
|
-
sort_stream(collect_stream_data(field))
|
3
|
+
def stream_for(field, order_by = :created_at)
|
4
|
+
sort_stream(collect_stream_data(field), order_by)
|
5
5
|
end
|
6
6
|
|
7
7
|
private
|
8
|
-
def sort_stream stream
|
9
|
-
stream.sort{|a,b| b.
|
8
|
+
def sort_stream stream, order_by
|
9
|
+
stream.sort{ |a,b| b.send(order_by) <=> a.send(order_by) }
|
10
10
|
end
|
11
11
|
|
12
12
|
def collect_stream_data field
|
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|
data/spec/lib/streamable_spec.rb
CHANGED
@@ -76,7 +76,7 @@ describe ActiveMetadata::Streamable do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
|
79
|
-
it "should sort the stream
|
79
|
+
it "should sort the stream by updated_at DESC" do
|
80
80
|
@document.save_attachment_for(:surname,test_pdf("pdf_test_1"))
|
81
81
|
sleep 2.seconds
|
82
82
|
@document.create_note_for(:surname, "surname note")
|
@@ -84,13 +84,28 @@ describe ActiveMetadata::Streamable do
|
|
84
84
|
@document.save_attachment_for(:surname,test_pdf("pdf_test_2"))
|
85
85
|
|
86
86
|
stream = @document.send(:collect_stream_data, :surname)
|
87
|
-
res = @document.send(:sort_stream, stream)
|
87
|
+
res = @document.send(:sort_stream, stream, :updated_at)
|
88
88
|
|
89
89
|
res[0].attach_file_name.should eq 'pdf_test_2.pdf'
|
90
90
|
res[1].note.should eq 'surname note'
|
91
91
|
res[2].attach_file_name.should eq 'pdf_test_1.pdf'
|
92
92
|
end
|
93
93
|
|
94
|
+
it "should sort the stream by updated_at DESC" do
|
95
|
+
@document.create_note_for(:surname, "surname note")
|
96
|
+
sleep 2.seconds
|
97
|
+
@document.save_attachment_for(:surname,test_pdf("pdf_test_2"))
|
98
|
+
sleep 2.seconds
|
99
|
+
@document.save_attachment_for(:surname,test_pdf("pdf_test_1"))
|
100
|
+
|
101
|
+
stream = @document.send(:collect_stream_data, :surname)
|
102
|
+
res = @document.send(:sort_stream, stream, :created_at)
|
103
|
+
|
104
|
+
res[0].attach_file_name.should eq 'pdf_test_1.pdf'
|
105
|
+
res[1].attach_file_name.should eq 'pdf_test_2.pdf'
|
106
|
+
res[2].note.should eq 'surname note'
|
107
|
+
end
|
108
|
+
|
94
109
|
end
|
95
110
|
|
96
111
|
describe "stream_for" do
|
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.6.
|
4
|
+
version: 0.6.7
|
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: 2012-
|
13
|
+
date: 2012-03-23 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &70220537360720 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.2.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70220537360720
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: sqlite3
|
28
|
-
requirement: &
|
28
|
+
requirement: &70220537360160 !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: *70220537360160
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rspec-rails
|
39
|
-
requirement: &
|
39
|
+
requirement: &70220537359380 !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: *70220537359380
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: sqlite3
|
50
|
-
requirement: &
|
50
|
+
requirement: &70220537358200 !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: *70220537358200
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: sqlite3-ruby
|
61
|
-
requirement: &
|
61
|
+
requirement: &70220537357200 !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: *70220537357200
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: cucumber-rails
|
72
|
-
requirement: &
|
72
|
+
requirement: &70220537356660 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70220537356660
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: ci_reporter
|
83
|
-
requirement: &
|
83
|
+
requirement: &70220537355860 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *70220537355860
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: paperclip
|
94
|
-
requirement: &
|
94
|
+
requirement: &70220537354840 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,7 +99,7 @@ dependencies:
|
|
99
99
|
version: '0'
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *70220537354840
|
103
103
|
description: First implementation will write metadata on mongodb
|
104
104
|
email:
|
105
105
|
- acampolonghi@gmail.com
|
@@ -139,10 +139,8 @@ files:
|
|
139
139
|
- config/cucumber.yml
|
140
140
|
- config/database.yml
|
141
141
|
- config/routes.rb
|
142
|
-
- db/development.sqlite3
|
143
142
|
- db/migrate/01_create_test_resources.rb
|
144
143
|
- db/migrate/02_active_metadata_migrations.rb
|
145
|
-
- db/test.sqlite3
|
146
144
|
- lib/active_metadata/base.rb
|
147
145
|
- lib/active_metadata/engine.rb
|
148
146
|
- lib/active_metadata/form_helper.rb
|
@@ -237,7 +235,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
237
235
|
version: '0'
|
238
236
|
segments:
|
239
237
|
- 0
|
240
|
-
hash:
|
238
|
+
hash: 4276269757751504892
|
241
239
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
242
240
|
none: false
|
243
241
|
requirements:
|
@@ -246,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
246
244
|
version: '0'
|
247
245
|
segments:
|
248
246
|
- 0
|
249
|
-
hash:
|
247
|
+
hash: 4276269757751504892
|
250
248
|
requirements: []
|
251
249
|
rubyforge_project: active_metadata
|
252
250
|
rubygems_version: 1.8.10
|
data/db/development.sqlite3
DELETED
Binary file
|
data/db/test.sqlite3
DELETED
Binary file
|