active_metadata 0.0.2 → 0.1.9

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.
Files changed (90) hide show
  1. data/app/controllers/active_metadata/attachments_controller.rb +47 -0
  2. data/app/controllers/active_metadata/histories_controller.rb +16 -0
  3. data/app/controllers/active_metadata/notes_controller.rb +61 -0
  4. data/app/controllers/active_metadata/watchers_controller.rb +34 -0
  5. data/app/helpers/application_helper.rb +2 -0
  6. data/app/views/active_metadata/attachments/index.html.erb +11 -0
  7. data/app/views/active_metadata/histories/index.html.erb +5 -0
  8. data/app/views/active_metadata/notes/_form.html.erb +23 -0
  9. data/app/views/active_metadata/notes/edit.html.erb +8 -0
  10. data/app/views/active_metadata/notes/index.html.erb +11 -0
  11. data/app/views/active_metadata/notes/index.js.erb +1 -0
  12. data/app/views/active_metadata/notes/show.html.erb +9 -0
  13. data/app/views/active_metadata/watchers/create.js.erb +1 -0
  14. data/app/views/active_metadata/watchers/destroy.js.erb +1 -0
  15. data/app/views/active_metadata/watchers/index.html.erb +5 -0
  16. data/config/active_metadata.yml +17 -0
  17. data/config/application.rb +0 -0
  18. data/config/database.yml +11 -0
  19. data/config/initializers/inflections.rb +7 -0
  20. data/config/mongoid.yml +28 -0
  21. data/config/routes.rb +30 -0
  22. data/db/development.sqlite3 +0 -0
  23. data/db/migrate/001_create_document.rb +12 -0
  24. data/db/migrate/002_add_surname_to_document.rb +9 -0
  25. data/db/migrate/003_create_section.rb +13 -0
  26. data/db/migrate/004_create_user.rb +14 -0
  27. data/db/migrate/005_create_inboxes.rb +19 -0
  28. data/db/migrate/006_create_alert_message.rb +37 -0
  29. data/db/migrate/007_create_notes.rb +22 -0
  30. data/db/migrate/008_create_history.rb +20 -0
  31. data/db/migrate/009_create_watcher.rb +21 -0
  32. data/db/migrate/010_create_attachment.rb +26 -0
  33. data/db/migrate/011_add_created_by_to_histories.rb +10 -0
  34. data/db/test.sqlite3 +0 -0
  35. data/features/step_definitions/add_a_user_to_a_watcher_steps.rb +29 -0
  36. data/features/step_definitions/trigger_alert_on_modify_steps.rb +86 -0
  37. data/features/supports/file.txt +1 -0
  38. data/features/supports/initializer.rb +1 -0
  39. data/features/supports/updated_file.txt +1 -0
  40. data/features/watchlist/add_a_user_to_a_watcher.feature +19 -0
  41. data/features/watchlist/trigger_alert_on_modify.feature +90 -0
  42. data/lib/active_metadata/base.rb +59 -0
  43. data/lib/active_metadata/persistence/active_record/attachment.rb +42 -0
  44. data/lib/active_metadata/persistence/active_record/history.rb +22 -0
  45. data/lib/active_metadata/persistence/active_record/note.rb +45 -0
  46. data/lib/active_metadata/persistence/active_record/watcher.rb +45 -0
  47. data/lib/active_metadata/persistence/active_record.rb +26 -0
  48. data/lib/active_metadata/persistence/mongoid/attachment.rb +45 -0
  49. data/lib/active_metadata/persistence/mongoid/history.rb +26 -0
  50. data/lib/active_metadata/persistence/mongoid/note.rb +48 -0
  51. data/lib/active_metadata/persistence/mongoid/watcher.rb +43 -0
  52. data/lib/active_metadata/persistence/mongoid.rb +30 -0
  53. data/lib/active_metadata/persistence/persistence.rb +13 -0
  54. data/lib/active_metadata/railtie.rb +6 -0
  55. data/lib/active_metadata/version.rb +1 -1
  56. data/lib/active_metadata.rb +6 -12
  57. data/lib/application_controller.rb +28 -0
  58. data/lib/application_helper.rb +7 -0
  59. data/lib/engine.rb +29 -0
  60. data/lib/model/active_record/attachment.rb +18 -0
  61. data/lib/model/active_record/history.rb +2 -0
  62. data/lib/model/active_record/note.rb +2 -0
  63. data/lib/model/active_record/watcher.rb +4 -0
  64. data/lib/model/mongoid/active_meta.rb +6 -0
  65. data/lib/model/mongoid/attachment.rb +25 -0
  66. data/lib/model/mongoid/history.rb +9 -0
  67. data/lib/model/mongoid/label.rb +14 -0
  68. data/lib/model/mongoid/note.rb +10 -0
  69. data/lib/model/mongoid/watcher.rb +24 -0
  70. data/lib/rails/railties/tasks.rake +8 -0
  71. data/lib/rake/active_record_tasks.rb +77 -0
  72. data/lib/rake/task.rb +18 -0
  73. data/lib/templates/active_metadata.yml +17 -0
  74. data/lib/templates/active_metadata_migrations +67 -0
  75. data/lib/templates/mongoid.yml +20 -0
  76. data/spec/active_metadata_spec.rb +596 -0
  77. data/spec/benchmark_spec.rb +35 -0
  78. data/spec/controllers/metadata_controller_spec.rb +14 -0
  79. data/spec/spec_helper.rb +87 -0
  80. data/spec/support/document.rb +8 -0
  81. data/spec/support/pdf_test.pdf +0 -0
  82. data/spec/support/pdf_test_2.pdf +0 -0
  83. data/spec/support/section.rb +8 -0
  84. data/spec/support/user.rb +13 -0
  85. data/spec/support/watcher_notifier.rb +21 -0
  86. metadata +201 -19
  87. data/.gitignore +0 -4
  88. data/Gemfile +0 -4
  89. data/Rakefile +0 -1
  90. data/active_metadata.gemspec +0 -24
@@ -0,0 +1,87 @@
1
+ # encoding: utf-8
2
+ require 'rubygems'
3
+ require "rails/all"
4
+ require "logger"
5
+ require 'rspec/core'
6
+ require "sqlite3"
7
+ require "mongoid"
8
+ require "rack/test/uploaded_file"
9
+
10
+ $: << File.expand_path(File.dirname(__FILE__) + "/../app")
11
+ gemfile = File.expand_path('../Gemfile', __FILE__)
12
+
13
+ begin
14
+ ENV['BUNDLE_GEMFILE'] = gemfile
15
+ require 'bundler'
16
+ Bundler.setup
17
+ rescue Bundler::GemNotFound => e
18
+ STDERR.puts e.message
19
+ STDERR.puts "Try running `bundle install`."
20
+ exit!
21
+ end if File.exist?(gemfile)
22
+
23
+ ENV["RAILS_ENV"] ||= 'test'
24
+ ENV["ACTIVE_METADATA_ENV"] ||= 'test'
25
+
26
+ ActiveRecord::Base.establish_connection YAML.load_file("config/database.yml")[ENV["RAILS_ENV"]]
27
+ ActiveRecord::Base.logger = Logger.new "log/test.log"
28
+ 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
+
38
+ # loading ruby files
39
+ require "#{File.dirname(__FILE__)}/../lib/engine.rb"
40
+ Dir["spec/support/*.rb"].each {|f| require "support/#{(File.basename(f, File.extname(f)) )}"}
41
+
42
+ Dir["app/models/*.rb"].each {|f| require "models/#{(File.basename(f, File.extname(f)) )}"}
43
+
44
+ RSpec.configure do |config|
45
+ # == Mock Framework
46
+ #
47
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
48
+ #
49
+ # config.mock_with :mocha
50
+ # config.mock_with :flexmock
51
+ # config.mock_with :rr
52
+ config.mock_with :rspec
53
+
54
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
55
+ # config.fixture_path = "#{::Rails.root}/spec/fixtures"
56
+
57
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
58
+ # examples within a transaction, remove the following line or assign false
59
+ # instead of true.
60
+ # config.use_transactional_fixtures = true
61
+
62
+
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
+ config.before(:each) do
72
+ Document.delete_all
73
+ Note.delete_all
74
+ Watcher.delete_all
75
+ Attachment.delete_all
76
+ History.delete_all
77
+ if is_mongo
78
+ ActiveMeta.delete_all
79
+ Label.delete_all
80
+ end
81
+ FileUtils.remove_dir File.expand_path('public/system/') if Dir.exist?(File.expand_path('public/system/'))
82
+ end
83
+
84
+ config.after(:suite) do
85
+ # seems that closing the established connection isn't really necessary
86
+ end
87
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ class Document < ActiveRecord::Base
3
+ set_table_name :documents
4
+ has_one :section
5
+
6
+ acts_as_metadata
7
+
8
+ end
Binary file
Binary file
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ class Section < ActiveRecord::Base
3
+ set_table_name :sections
4
+ belongs_to :document
5
+
6
+ acts_as_metadata :metadata_id_from => [:document]
7
+
8
+ end
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+ class User < ActiveRecord::Base
3
+ set_table_name :users
4
+
5
+ has_one :inbox
6
+
7
+ @@current_user = User.create!
8
+
9
+ def self.current
10
+ @@current_user
11
+ end
12
+
13
+ end
@@ -0,0 +1,21 @@
1
+ class WatcherNotifier
2
+ attr_accessor :matched_label, :old_value, :new_value, :model_class, :model_id, :type, :created_by
3
+
4
+ def initialze
5
+ puts "---------------------------------------->"
6
+ end
7
+
8
+ def notify(matched_label, old_value, new_value, model_class, model_id,owner_id,type, created_by)
9
+ @matched_label= matched_label
10
+ @old_value = old_value
11
+ @new_value = new_value
12
+ @model_class = model_class
13
+ @model_id = model_id
14
+ @type = type
15
+ @created_by = created_by
16
+
17
+ puts "fake notification sent for label #{@matched_label} with value #{@new_value}"
18
+
19
+ end
20
+
21
+ end
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.0.2
4
+ version: 0.1.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,12 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-07-19 00:00:00.000000000 +02:00
14
- default_executable:
13
+ date: 2011-10-03 00:00:00.000000000Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
- name: rspec
18
- requirement: &2156342340 !ruby/object:Gem::Requirement
16
+ name: rspec-rails
17
+ requirement: &2157159560 !ruby/object:Gem::Requirement
19
18
  none: false
20
19
  requirements:
21
20
  - - ! '>='
@@ -23,21 +22,98 @@ dependencies:
23
22
  version: '0'
24
23
  type: :development
25
24
  prerelease: false
26
- version_requirements: *2156342340
25
+ version_requirements: *2157159560
27
26
  - !ruby/object:Gem::Dependency
28
- name: mongo
29
- requirement: &2156335500 !ruby/object:Gem::Requirement
27
+ name: sqlite3
28
+ requirement: &2157156760 !ruby/object:Gem::Requirement
30
29
  none: false
31
30
  requirements:
32
31
  - - ! '>='
33
32
  - !ruby/object:Gem::Version
34
33
  version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *2157156760
37
+ - !ruby/object:Gem::Dependency
38
+ name: sqlite3-ruby
39
+ requirement: &2157138060 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *2157138060
48
+ - !ruby/object:Gem::Dependency
49
+ name: cucumber
50
+ requirement: &2157135580 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *2157135580
59
+ - !ruby/object:Gem::Dependency
60
+ name: ci_reporter
61
+ requirement: &2157126060 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *2157126060
70
+ - !ruby/object:Gem::Dependency
71
+ name: rails
72
+ requirement: &2157122780 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - =
76
+ - !ruby/object:Gem::Version
77
+ version: 3.0.1
35
78
  type: :runtime
36
79
  prerelease: false
37
- version_requirements: *2156335500
80
+ version_requirements: *2157122780
81
+ - !ruby/object:Gem::Dependency
82
+ name: activerecord
83
+ requirement: &2157120400 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - =
87
+ - !ruby/object:Gem::Version
88
+ version: 3.0.1
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: *2157120400
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
38
114
  - !ruby/object:Gem::Dependency
39
115
  name: bson_ext
40
- requirement: &2156335080 !ruby/object:Gem::Requirement
116
+ requirement: &2157110820 !ruby/object:Gem::Requirement
41
117
  none: false
42
118
  requirements:
43
119
  - - ! '>='
@@ -45,7 +121,18 @@ dependencies:
45
121
  version: '0'
46
122
  type: :runtime
47
123
  prerelease: false
48
- version_requirements: *2156335080
124
+ version_requirements: *2157110820
125
+ - !ruby/object:Gem::Dependency
126
+ name: to_xls
127
+ requirement: &2157109560 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: *2157109560
49
136
  description: First implementation will write metadata on mongodb
50
137
  email:
51
138
  - acampolonghi@gmail.com
@@ -54,13 +141,91 @@ executables: []
54
141
  extensions: []
55
142
  extra_rdoc_files: []
56
143
  files:
57
- - .gitignore
58
- - Gemfile
59
- - Rakefile
60
- - active_metadata.gemspec
61
- - lib/active_metadata.rb
144
+ - lib/active_metadata/base.rb
145
+ - lib/active_metadata/persistence/active_record/attachment.rb
146
+ - lib/active_metadata/persistence/active_record/history.rb
147
+ - lib/active_metadata/persistence/active_record/note.rb
148
+ - lib/active_metadata/persistence/active_record/watcher.rb
149
+ - 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
+ - lib/active_metadata/persistence/persistence.rb
156
+ - lib/active_metadata/railtie.rb
62
157
  - lib/active_metadata/version.rb
63
- has_rdoc: true
158
+ - lib/active_metadata.rb
159
+ - lib/application_controller.rb
160
+ - lib/application_helper.rb
161
+ - lib/engine.rb
162
+ - lib/model/active_record/attachment.rb
163
+ - lib/model/active_record/history.rb
164
+ - lib/model/active_record/note.rb
165
+ - lib/model/active_record/watcher.rb
166
+ - lib/model/mongoid/active_meta.rb
167
+ - lib/model/mongoid/attachment.rb
168
+ - lib/model/mongoid/history.rb
169
+ - lib/model/mongoid/label.rb
170
+ - lib/model/mongoid/note.rb
171
+ - lib/model/mongoid/watcher.rb
172
+ - lib/rails/railties/tasks.rake
173
+ - lib/rake/active_record_tasks.rb
174
+ - lib/rake/task.rb
175
+ - lib/templates/active_metadata.yml
176
+ - lib/templates/active_metadata_migrations
177
+ - lib/templates/mongoid.yml
178
+ - app/controllers/active_metadata/attachments_controller.rb
179
+ - app/controllers/active_metadata/histories_controller.rb
180
+ - app/controllers/active_metadata/notes_controller.rb
181
+ - app/controllers/active_metadata/watchers_controller.rb
182
+ - app/helpers/application_helper.rb
183
+ - app/views/active_metadata/attachments/index.html.erb
184
+ - app/views/active_metadata/histories/index.html.erb
185
+ - app/views/active_metadata/notes/_form.html.erb
186
+ - app/views/active_metadata/notes/edit.html.erb
187
+ - app/views/active_metadata/notes/index.html.erb
188
+ - app/views/active_metadata/notes/index.js.erb
189
+ - app/views/active_metadata/notes/show.html.erb
190
+ - app/views/active_metadata/watchers/create.js.erb
191
+ - app/views/active_metadata/watchers/destroy.js.erb
192
+ - app/views/active_metadata/watchers/index.html.erb
193
+ - config/active_metadata.yml
194
+ - config/application.rb
195
+ - config/database.yml
196
+ - config/initializers/inflections.rb
197
+ - config/mongoid.yml
198
+ - config/routes.rb
199
+ - db/development.sqlite3
200
+ - db/migrate/001_create_document.rb
201
+ - db/migrate/002_add_surname_to_document.rb
202
+ - db/migrate/003_create_section.rb
203
+ - db/migrate/004_create_user.rb
204
+ - db/migrate/005_create_inboxes.rb
205
+ - db/migrate/006_create_alert_message.rb
206
+ - db/migrate/007_create_notes.rb
207
+ - db/migrate/008_create_history.rb
208
+ - db/migrate/009_create_watcher.rb
209
+ - db/migrate/010_create_attachment.rb
210
+ - db/migrate/011_add_created_by_to_histories.rb
211
+ - db/test.sqlite3
212
+ - features/step_definitions/add_a_user_to_a_watcher_steps.rb
213
+ - features/step_definitions/trigger_alert_on_modify_steps.rb
214
+ - features/supports/file.txt
215
+ - features/supports/initializer.rb
216
+ - features/supports/updated_file.txt
217
+ - features/watchlist/add_a_user_to_a_watcher.feature
218
+ - features/watchlist/trigger_alert_on_modify.feature
219
+ - spec/active_metadata_spec.rb
220
+ - spec/benchmark_spec.rb
221
+ - spec/controllers/metadata_controller_spec.rb
222
+ - spec/spec_helper.rb
223
+ - spec/support/document.rb
224
+ - spec/support/pdf_test.pdf
225
+ - spec/support/pdf_test_2.pdf
226
+ - spec/support/section.rb
227
+ - spec/support/user.rb
228
+ - spec/support/watcher_notifier.rb
64
229
  homepage: ''
65
230
  licenses: []
66
231
  post_install_message:
@@ -81,8 +246,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
246
  version: '0'
82
247
  requirements: []
83
248
  rubyforge_project: active_metadata
84
- rubygems_version: 1.6.2
249
+ rubygems_version: 1.8.10
85
250
  signing_key:
86
251
  specification_version: 3
87
252
  summary: Add metadata to fields in an active record model
88
- test_files: []
253
+ test_files:
254
+ - features/step_definitions/add_a_user_to_a_watcher_steps.rb
255
+ - features/step_definitions/trigger_alert_on_modify_steps.rb
256
+ - features/supports/file.txt
257
+ - features/supports/initializer.rb
258
+ - features/supports/updated_file.txt
259
+ - features/watchlist/add_a_user_to_a_watcher.feature
260
+ - features/watchlist/trigger_alert_on_modify.feature
261
+ - spec/active_metadata_spec.rb
262
+ - spec/benchmark_spec.rb
263
+ - spec/controllers/metadata_controller_spec.rb
264
+ - spec/spec_helper.rb
265
+ - spec/support/document.rb
266
+ - spec/support/pdf_test.pdf
267
+ - spec/support/pdf_test_2.pdf
268
+ - spec/support/section.rb
269
+ - spec/support/user.rb
270
+ - spec/support/watcher_notifier.rb
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Specify your gem's dependencies in active_metadata.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1 +0,0 @@
1
- require 'bundler/gem_tasks'
@@ -1,24 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "active_metadata/version"
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "active_metadata"
7
- s.version = ActiveMetadata::VERSION
8
- s.authors = ["Andrea Campolonghi", "Gian Carlo Pace"]
9
- s.email = ["acampolonghi@gmail.com", "giancarlo.pace@gmail.com"]
10
- s.homepage = ""
11
- s.summary = %q{Add metadata to fields in an active record model}
12
- s.description = %q{First implementation will write metadata on mongodb}
13
-
14
- s.rubyforge_project = "active_metadata"
15
-
16
- s.add_development_dependency "rspec"
17
- s.add_dependency "mongo"
18
- s.add_dependency "bson_ext"
19
-
20
- s.files = `git ls-files`.split("\n")
21
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
- s.require_paths = ["lib"]
24
- end