active_metadata 0.1.9 → 0.2.0

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.
@@ -1,5 +1,4 @@
1
1
  development:
2
- persists_with: "active_record"
3
2
  history_skip_fields:
4
3
  - 'id'
5
4
  - 'created_at'
@@ -8,7 +7,6 @@ development:
8
7
  attachment_base_url: "/system/metadata_attachments"
9
8
 
10
9
  test:
11
- persists_with: "active_record"
12
10
  history_skip_fields:
13
11
  - 'id'
14
12
  - 'created_at'
Binary file
data/db/test.sqlite3 CHANGED
Binary file
@@ -5,9 +5,7 @@ module ActiveMetadata
5
5
  ## Define ModelMethods
6
6
  module Base
7
7
 
8
- require 'mongoid' if ActiveMetadata::CONFIG['persists_with'] == 'mongoid'
9
- require 'mongoid_paperclip' if ActiveMetadata::CONFIG['persists_with'] == 'mongoid'
10
- require 'paperclip' if ActiveMetadata::CONFIG['persists_with'] == 'active_record'
8
+ require 'paperclip'
11
9
  require "active_metadata/persistence/persistence"
12
10
 
13
11
  def self.included(klass)
@@ -1,13 +1,9 @@
1
1
  module ActiveMetadata::Persistence
2
2
 
3
- PERSISTS_WITH = ActiveMetadata::CONFIG['persists_with']
4
-
5
- require "active_metadata/persistence/mongoid" if PERSISTS_WITH == 'mongoid'
6
- require "active_metadata/persistence/active_record" if PERSISTS_WITH == 'active_record'
3
+ require "active_metadata/persistence/active_record"
7
4
 
8
5
  def self.included(receiver)
9
- persister = PERSISTS_WITH == 'active_record' ? ActiveMetadata::Persistence::ActiveRecord : ActiveMetadata::Persistence::Mongoid
10
- receiver.send :include, persister
6
+ receiver.send :include, ActiveMetadata::Persistence::ActiveRecord
11
7
  end
12
8
 
13
9
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveMetadata
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -62,14 +62,7 @@ describe ActiveMetadata do
62
62
 
63
63
  end
64
64
 
65
- it "should update a note using update_note_for_name", :mongoid => true do
66
- @document.create_note_for(:name, "Very important note!")
67
- id = @document.notes_for(:name).last._id
68
- @document.update_note(id, "New note value!")
69
- @document.notes_for(:name).last.note.should eq "New note value!"
70
- end
71
-
72
- it "should update a note using update_note_for_name", :active_record => true do
65
+ it "should update a note using update_note_for_name" do
73
66
  @document.create_note_for(:name, "Very important note!")
74
67
  id = @document.notes_for(:name).last.id
75
68
  @document.update_note(id, "New note value!")
@@ -107,16 +100,7 @@ describe ActiveMetadata do
107
100
  @document.notes_for(:name).last.updated_at.should be_a_kind_of Time
108
101
  end
109
102
 
110
- it "should update the updated_at field when a note is updated", :mongoid => true do
111
- @document.create_note_for(:name, "Very important note!")
112
- id = @document.notes_for(:name).last._id
113
- sleep 1.seconds
114
- @document.update_note id, "new note value"
115
- note = @document.notes_for(:name).last
116
- note.updated_at.should > note.created_at
117
- end
118
-
119
- it "should update the updated_at field when a note is updated", :active_record => true do
103
+ it "should update the updated_at field when a note is updated" do
120
104
  @document.create_note_for(:name, "Very important note!")
121
105
  id = @document.notes_for(:name).last.id
122
106
  sleep 1.seconds
@@ -125,19 +109,7 @@ describe ActiveMetadata do
125
109
  note.updated_at.should > note.created_at
126
110
  end
127
111
 
128
- it "should verify that note are saved with the correct model id if metadata_id_from is defined" , :mongoid => true do
129
- # fixtures
130
- @document.create_note_for(:name, "Very important note!")
131
- @section = @document.create_section :title => "new section"
132
- @section.reload
133
- @section.create_note_for(:title, "Very important note for section!")
134
-
135
- # expectations
136
- @document.notes_for(:name).last.label.active_meta.document_id.should eq @document.id
137
- @section.notes_for(:title).last.label.active_meta.document_id.should eq @document.id
138
- end
139
-
140
- it "should verify that note are saved with the correct model id if metadata_id_from is defined" , :active_record => true do
112
+ it "should verify that note are saved with the correct model id if metadata_id_from is defined" do
141
113
  # fixtures
142
114
  @document.create_note_for(:name, "Very important note!")
143
115
  @section = @document.create_section :title => "new section"
@@ -149,45 +121,7 @@ describe ActiveMetadata do
149
121
  @section.notes_for(:title).last.document_id.should eq @document.id
150
122
  end
151
123
 
152
- it "should delete a note passing a bson object as id", :mongoid => true do
153
- #fixtures
154
- 2.times do |i|
155
- @document.create_note_for(:name, "Note number #{i}")
156
- end
157
-
158
- #expectations
159
- notes = @document.notes_for(:name)
160
- notes.count.should eq 2
161
- note_to_be_deleted = notes[0].note
162
-
163
- @document.delete_note_for(:name,notes[0]._id)
164
-
165
- notes = @document.notes_for(:name)
166
- notes.count.should eq 1
167
- notes.first.note.should_not eq note_to_be_deleted
168
-
169
- end
170
-
171
- it "should delete a note passing a string as id", :mongoid => true do
172
- #fixtures
173
- 2.times do |i|
174
- @document.create_note_for(:name, "Note number #{i}")
175
- end
176
-
177
- #expectations
178
- notes = @document.notes_for(:name)
179
- notes.count.should eq 2
180
- note_to_be_deleted = notes[0].note
181
-
182
- @document.delete_note_for(:name,notes[0].id.to_s)
183
-
184
- notes = @document.notes_for(:name)
185
- notes.count.should eq 1
186
- notes.first.note.should_not eq note_to_be_deleted
187
-
188
- end
189
-
190
- it "should delete a note id", :active_record => true do
124
+ it "should delete a note id" do
191
125
  #fixtures
192
126
  2.times do |i|
193
127
  @document.create_note_for(:name, "Note number #{i}")
@@ -218,21 +152,7 @@ describe ActiveMetadata do
218
152
  @document.notes_for(:name).last.note.should eq "Note number 0"
219
153
  end
220
154
 
221
- it "should find a note by id", :mongoid => true, do
222
-
223
- 3.times do |i|
224
- @document.create_note_for(:name, "Note number #{i}")
225
- end
226
-
227
- note = @document.notes_for(:name).last
228
- id = note.id.to_s
229
-
230
- match_note = @document.note_for :name,id
231
- match_note.id.to_s.should eq id
232
-
233
- end
234
-
235
- it "should find a note by id", :active_record => true, do
155
+ it "should find a note by id" do
236
156
 
237
157
  3.times do |i|
238
158
  @document.create_note_for(:name, "Note number #{i}")
@@ -286,20 +206,7 @@ describe ActiveMetadata do
286
206
  @another_doc.history_for(:name).last.value.should eq @another_doc.name
287
207
  end
288
208
 
289
- it "should verify that history is saved with the correct model id if metadata_id_from is defined", :mongoid => true, do
290
- # fixtures
291
- @section = @document.create_section :title => "new section"
292
- @section.reload
293
-
294
- # expectations
295
- @document.history_for(:name).count.should eq(1)
296
- @document.history_for(:name).last.label.active_meta.document_id.should eq @document.id
297
-
298
- @section.history_for(:title).count.should eq(1)
299
- @section.history_for(:title).last.label.active_meta.document_id.should eq @document.id
300
- end
301
-
302
- it "should verify that history is saved with the correct model id if metadata_id_from is defined", :active_record => true, do
209
+ it "should verify that history is saved with the correct model id if metadata_id_from is defined" do
303
210
  # fixtures
304
211
  @section = @document.create_section :title => "new section"
305
212
  @section.reload
@@ -354,12 +261,7 @@ describe ActiveMetadata do
354
261
  @document.attachments_for(:name).should have(1).record
355
262
  end
356
263
 
357
- it "should verify that the attachment metadata id refers to the correct self id", :mongoid => true do
358
- @document.save_attachment_for(:name,@attachment)
359
- @document.attachments_for(:name).last.label.active_meta.document_id.should eq @document.id
360
- end
361
-
362
- it "should verify that the attachment metadata id refers to the correct self id", :active_record => true do
264
+ it "should verify that the attachment metadata id refers to the correct self id" do
363
265
  @document.save_attachment_for(:name,@attachment)
364
266
  @document.attachments_for(:name).last.document_id.should eq @document.id
365
267
  end
@@ -379,68 +281,19 @@ describe ActiveMetadata do
379
281
  @document.attachments_for(:name).last.attach.size.should eq @attachment.size
380
282
  end
381
283
 
382
- it "should verify that the attachment updated_at is correctly saved", :mongoid => true do
383
- @document.save_attachment_for(:name,@attachment)
384
- @document.attachments_for(:name).last.attach.instance_read(:updated_at).should be_a_kind_of DateTime
385
- end
386
-
387
- it "should verify that the attachment updated_at is correctly saved", :active_record => true do
284
+ it "should verify that the attachment updated_at is correctly saved" do
388
285
  @document.save_attachment_for(:name,@attachment)
389
286
  @document.attachments_for(:name).last.attach.instance_read(:updated_at).should be_a_kind_of Time
390
287
  end
391
288
 
392
- it "should verify that the document has been saved in the correct position on filesystem", :active_record => true do
289
+ it "should verify that the document has been saved in the correct position on filesystem" do
393
290
  @document.save_attachment_for(:name,@attachment)
394
291
  att = @document.attachments_for(:name).first
395
292
  expected_path = File.expand_path "#{ActiveMetadata::CONFIG['attachment_base_path']}/#{@document.id}/#{:name.to_s}/#{att.id}/#{@attachment.original_filename}"
396
293
  File.exists?(expected_path).should be_true
397
294
  end
398
295
 
399
- it "should verify that the document has been saved in the correct position on filesystem", :mongoid => true do
400
- @document.save_attachment_for(:name,@attachment)
401
- att = @document.attachments_for(:name).first
402
- expected_path = File.expand_path "#{ActiveMetadata::CONFIG['attachment_base_path']}/#{@document.id}/#{:name.to_s}/#{att.counter}/#{@attachment.original_filename}"
403
- File.exists?(expected_path).should be_true
404
- end
405
-
406
- it "should delete an attachment passing a bson object as id", :mongoid => true do
407
-
408
- #fixtures
409
- 2.times do |i|
410
- @document.save_attachment_for(:name,@attachment)
411
- end
412
-
413
- #expectations
414
- attachments = @document.attachments_for(:name)
415
- attachments.count.should eq 2
416
- attachment_path_to_be_deleted = attachments[0].attach.path
417
-
418
- @document.delete_attachment_for(:name,attachments[0]._id)
419
-
420
- attachments = @document.attachments_for(:name)
421
- attachments.count.should eq 1
422
- attachments.first.attach.path.should_not eq attachment_path_to_be_deleted
423
- end
424
-
425
- it "should delete an attachment passing a string as id", :mongoid => true do
426
- #fixtures
427
- 2.times do |i|
428
- @document.save_attachment_for(:name,@attachment)
429
- end
430
-
431
- #expectations
432
- attachments = @document.attachments_for(:name)
433
- attachments.count.should eq 2
434
- attachment_path_to_be_deleted = attachments[0].attach.path
435
-
436
- @document.delete_attachment_for(:name,attachments[0].id.to_s)
437
-
438
- attachments = @document.attachments_for(:name)
439
- attachments.count.should eq 1
440
- attachments.first.attach.path.should_not eq attachment_path_to_be_deleted
441
- end
442
-
443
- it "should delete an attachment by id", :active_record => true do
296
+ it "should delete an attachment by id" do
444
297
  #fixtures
445
298
  2.times do |i|
446
299
  @document.save_attachment_for(:name,@attachment)
@@ -458,18 +311,7 @@ describe ActiveMetadata do
458
311
  attachments.first.attach.path.should_not eq attachment_path_to_be_deleted
459
312
  end
460
313
 
461
- it "should update an attachment", :mongoid => true do
462
- @document.save_attachment_for(:name,@attachment)
463
- att = @document.attachments_for(:name).last
464
-
465
- @document.update_attachment_for :name,att._id,@attachment2
466
- att2 = @document.attachments_for(:name).last
467
-
468
- File.exists?(att.attach.path).should be_false
469
- File.exists?(att2.attach.path).should be_true
470
- end
471
-
472
- it "should update an attachment", :active_record => true do
314
+ it "should update an attachment" do
473
315
  @document.save_attachment_for(:name,@attachment)
474
316
  att = @document.attachments_for(:name).last
475
317
 
@@ -480,19 +322,7 @@ describe ActiveMetadata do
480
322
  File.exists?(att2.attach.path).should be_true
481
323
  end
482
324
 
483
- it "should verify that field attachment_updated_at is modified after an update", :mongoid => true do
484
- @document.save_attachment_for(:name,@attachment)
485
- att = @document.attachments_for(:name).last
486
-
487
- sleep 1.seconds
488
-
489
- @document.update_attachment_for :name,att._id,@attachment2
490
- att2 = @document.attachments_for(:name).last
491
-
492
- att2.attach.instance_read(:updated_at).should be > att.attach.instance_read(:updated_at)
493
- end
494
-
495
- it "should verify that field attachment_updated_at is modified after an update", :active_record => true do
325
+ it "should verify that field attachment_updated_at is modified after an update" do
496
326
  @document.save_attachment_for(:name,@attachment)
497
327
  att = @document.attachments_for(:name).last
498
328
 
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,6 @@ require "rails/all"
4
4
  require "logger"
5
5
  require 'rspec/core'
6
6
  require "sqlite3"
7
- require "mongoid"
8
7
  require "rack/test/uploaded_file"
9
8
 
10
9
  $: << File.expand_path(File.dirname(__FILE__) + "/../app")
@@ -26,14 +25,6 @@ ENV["ACTIVE_METADATA_ENV"] ||= 'test'
26
25
  ActiveRecord::Base.establish_connection YAML.load_file("config/database.yml")[ENV["RAILS_ENV"]]
27
26
  ActiveRecord::Base.logger = Logger.new "log/test.log"
28
27
  Rails.logger = ActiveRecord::Base.logger
29
-
30
- #load the config
31
- conf = YAML.load_file('config/active_metadata.yml')[Rails.env]
32
- is_mongo = conf['persists_with'] == 'mongoid'
33
-
34
- if is_mongo
35
- Mongoid.load!("config/mongoid.yml")
36
- end
37
28
 
38
29
  # loading ruby files
39
30
  require "#{File.dirname(__FILE__)}/../lib/engine.rb"
@@ -60,24 +51,12 @@ RSpec.configure do |config|
60
51
  # config.use_transactional_fixtures = true
61
52
 
62
53
 
63
- config.before(:suite) do
64
- if is_mongo
65
- ActiveMeta.create_indexes()
66
- Label.create_indexes()
67
- Note.create_indexes();
68
- end
69
- end
70
-
71
54
  config.before(:each) do
72
55
  Document.delete_all
73
56
  Note.delete_all
74
57
  Watcher.delete_all
75
58
  Attachment.delete_all
76
59
  History.delete_all
77
- if is_mongo
78
- ActiveMeta.delete_all
79
- Label.delete_all
80
- end
81
60
  FileUtils.remove_dir File.expand_path('public/system/') if Dir.exist?(File.expand_path('public/system/'))
82
61
  end
83
62
 
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.1.9
4
+ version: 0.2.0
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-10-03 00:00:00.000000000Z
13
+ date: 2011-10-11 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec-rails
17
- requirement: &2157159560 !ruby/object:Gem::Requirement
17
+ requirement: &2156180700 !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: *2157159560
25
+ version_requirements: *2156180700
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: sqlite3
28
- requirement: &2157156760 !ruby/object:Gem::Requirement
28
+ requirement: &2156178420 !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: *2157156760
36
+ version_requirements: *2156178420
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: sqlite3-ruby
39
- requirement: &2157138060 !ruby/object:Gem::Requirement
39
+ requirement: &2156154920 !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: *2157138060
47
+ version_requirements: *2156154920
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: cucumber
50
- requirement: &2157135580 !ruby/object:Gem::Requirement
50
+ requirement: &2156100000 !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: *2157135580
58
+ version_requirements: *2156100000
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: ci_reporter
61
- requirement: &2157126060 !ruby/object:Gem::Requirement
61
+ requirement: &2156079680 !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: *2157126060
69
+ version_requirements: *2156079680
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rails
72
- requirement: &2157122780 !ruby/object:Gem::Requirement
72
+ requirement: &2156049960 !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: *2157122780
80
+ version_requirements: *2156049960
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: activerecord
83
- requirement: &2157120400 !ruby/object:Gem::Requirement
83
+ requirement: &2156032700 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - =
@@ -88,32 +88,10 @@ dependencies:
88
88
  version: 3.0.1
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *2157120400
91
+ version_requirements: *2156032700
92
92
  - !ruby/object:Gem::Dependency
93
- name: mongoid
94
- requirement: &2157119280 !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
97
- - - =
98
- - !ruby/object:Gem::Version
99
- version: 2.1.4
100
- type: :runtime
101
- prerelease: false
102
- version_requirements: *2157119280
103
- - !ruby/object:Gem::Dependency
104
- name: mongoid-paperclip
105
- requirement: &2157111740 !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- type: :runtime
112
- prerelease: false
113
- version_requirements: *2157111740
114
- - !ruby/object:Gem::Dependency
115
- name: bson_ext
116
- requirement: &2157110820 !ruby/object:Gem::Requirement
93
+ name: paperclip
94
+ requirement: &2156029320 !ruby/object:Gem::Requirement
117
95
  none: false
118
96
  requirements:
119
97
  - - ! '>='
@@ -121,10 +99,10 @@ dependencies:
121
99
  version: '0'
122
100
  type: :runtime
123
101
  prerelease: false
124
- version_requirements: *2157110820
102
+ version_requirements: *2156029320
125
103
  - !ruby/object:Gem::Dependency
126
104
  name: to_xls
127
- requirement: &2157109560 !ruby/object:Gem::Requirement
105
+ requirement: &2156024620 !ruby/object:Gem::Requirement
128
106
  none: false
129
107
  requirements:
130
108
  - - ! '>='
@@ -132,7 +110,7 @@ dependencies:
132
110
  version: '0'
133
111
  type: :runtime
134
112
  prerelease: false
135
- version_requirements: *2157109560
113
+ version_requirements: *2156024620
136
114
  description: First implementation will write metadata on mongodb
137
115
  email:
138
116
  - acampolonghi@gmail.com
@@ -147,11 +125,6 @@ files:
147
125
  - lib/active_metadata/persistence/active_record/note.rb
148
126
  - lib/active_metadata/persistence/active_record/watcher.rb
149
127
  - lib/active_metadata/persistence/active_record.rb
150
- - lib/active_metadata/persistence/mongoid/attachment.rb
151
- - lib/active_metadata/persistence/mongoid/history.rb
152
- - lib/active_metadata/persistence/mongoid/note.rb
153
- - lib/active_metadata/persistence/mongoid/watcher.rb
154
- - lib/active_metadata/persistence/mongoid.rb
155
128
  - lib/active_metadata/persistence/persistence.rb
156
129
  - lib/active_metadata/railtie.rb
157
130
  - lib/active_metadata/version.rb
@@ -1,45 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid::Attachment
2
-
3
- def self.included(receiver)
4
- receiver.send :include, InstanceMethods
5
- end
6
-
7
- module InstanceMethods
8
-
9
- def save_attachment_for(field, file)
10
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
11
- counter = label.attachments.count > 0 ? label.attachments.last.counter : 0
12
- attachment = Attachment.new(:attach => file, :counter => (counter + 1))
13
- label.attachments << attachment
14
- label.save
15
-
16
- self.send(:send_notification, field, "", attachment.attach.original_filename)
17
- end
18
-
19
- def attachments_for(field)
20
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
21
- label.attachments.desc(:attach_updated_at).to_a
22
- end
23
-
24
- def delete_attachment_for(field,id)
25
- a = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s).attachments.find(id)
26
- filename = a.attach.original_filename
27
- a.destroy
28
-
29
- self.send(:send_notification, field, filename, "")
30
- end
31
-
32
- def update_attachment_for(field, id, newfile)
33
- a = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s).attachments.find(id)
34
- old_filename = a.attach.original_filename
35
- a.attach = newfile
36
- a.save
37
- new_filename = a.attach.original_filename
38
-
39
- self.send(:send_notification, field, old_filename, new_filename)
40
- end
41
-
42
- end
43
-
44
- end
45
-
@@ -1,26 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid::History
2
-
3
- def self.included(receiver)
4
- receiver.send :include, InstanceMethods
5
- end
6
-
7
- module InstanceMethods
8
-
9
- def save_history
10
- self.changes.each do |key, value|
11
- next if ActiveMetadata::CONFIG['history_skip_fields'].include?(key)
12
-
13
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => key.to_s)
14
- label.histories.create!(:value => value[1], :created_at => Time.now.utc)
15
- end
16
- end
17
-
18
- def history_for field
19
- meta = ActiveMeta.find_or_create_by(:document_id => metadata_id)
20
-
21
- label = meta.labels.find_or_create_by(:name => field.to_s)
22
- label.histories.desc(:created_at).to_a
23
- end
24
-
25
- end
26
- end
@@ -1,48 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid::Note
2
-
3
- def self.included(receiver)
4
- receiver.send :include, InstanceMethods
5
- end
6
-
7
- module InstanceMethods
8
-
9
- def create_note_for(field, note, created_by=nil)
10
- raise RuntimeError, "The object id MUST be valued" unless self.id
11
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
12
- label.notes.create!(:note => note, :created_by => created_by, :created_at => Time.now.utc, :updated_at => Time.now.utc)
13
-
14
- # BEWARE: I'm not checking the send_notification method existence
15
- # this notification should be asynch
16
- self.send(:send_notification, field, "", note)
17
- end
18
-
19
- def update_note(id, note, updated_by=nil)
20
- n = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => 'name').notes.find id
21
- old_value = n.note
22
- n.update_attributes :note => note, :updated_by => updated_by, :updated_at => Time.now.utc
23
-
24
- self.send(:send_notification, n.label, old_value, note)
25
- end
26
-
27
- def notes_for(field)
28
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
29
- label.notes.desc(:updated_at).to_a
30
- end
31
-
32
- def note_for(field,id)
33
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
34
- label.notes.find(id)
35
- end
36
-
37
- def create_notes_for(field,notes)
38
- notes.each { |note| create_note_for field, note }
39
- end
40
-
41
- def delete_note_for(field,id)
42
- n = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s).notes.find(id)
43
- old_value = n.note
44
- n.destroy
45
- self.send(:send_notification, field, old_value, "")
46
- end
47
- end
48
- end
@@ -1,43 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid::Watcher
2
-
3
- def self.included(receiver)
4
- receiver.send :include, InstanceMethods
5
- end
6
-
7
- module InstanceMethods
8
- def create_watcher_for(field, owner)
9
- raise RuntimeError, "The object id MUST be valued" unless self.id
10
-
11
- label_path(field).watchers.create!(:owner_id => owner.id, :created_at => Time.now.utc, :updated_at => Time.now.utc)
12
-
13
- owner.create_inbox unless owner.inbox # ensure that an inbox is present
14
- end
15
-
16
- def watchers_for(field)
17
- label_path(field).watchers.asc(:created_at).to_a
18
- end
19
-
20
- def delete_watcher_for(field, owner)
21
- #TODO
22
- end
23
-
24
- def is_watched_by(field,owner)
25
- #TODO
26
- end
27
-
28
- # This is a callback method of the after_save of the ActiveRecord
29
- # object.
30
- # TODO: It should definetly be decoupled in time from the save of
31
- # the alerting system
32
- def on_save_watcher_callback
33
- self.changes.each do |field, values|
34
- send_notification(field, values.first, values.last)
35
- end
36
- end
37
-
38
- def send_notification(field, old_value, new_value)
39
- watchers_for(field).each { |watch| watch.notify_changes(field, old_value, new_value, self.class, self.id) }
40
- end
41
- end
42
-
43
- end
@@ -1,30 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid
2
-
3
- require "active_metadata/persistence/mongoid/attachment"
4
- require "active_metadata/persistence/mongoid/note"
5
- require "active_metadata/persistence/mongoid/history"
6
- require "active_metadata/persistence/mongoid/watcher"
7
- require "model/mongoid/active_meta"
8
- require "model/mongoid/label"
9
- require "model/mongoid/note"
10
- require "model/mongoid/history"
11
- require "model/mongoid/attachment"
12
- require "model/mongoid/watcher"
13
-
14
- def self.included(receiver)
15
- receiver.send :include, InstanceMethods
16
- end
17
-
18
- module InstanceMethods
19
-
20
- include ActiveMetadata::Persistence::Mongoid::Note
21
- include ActiveMetadata::Persistence::Mongoid::History
22
- include ActiveMetadata::Persistence::Mongoid::Attachment
23
- include ActiveMetadata::Persistence::Mongoid::Watcher
24
-
25
- def label_path(field_name)
26
- ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field_name.to_s)
27
- end
28
-
29
- end
30
- end