active_metadata 0.0.2 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
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