social_stream-documents 0.1.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.
Files changed (84) hide show
  1. data/.gitignore +9 -0
  2. data/Gemfile +3 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.rdoc +6 -0
  5. data/Rakefile +29 -0
  6. data/app/assets/images/btn/document.png +0 -0
  7. data/app/assets/images/formats/default.png +0 -0
  8. data/app/assets/images/formats/mp3.png +0 -0
  9. data/app/assets/images/formats/msexcel.png +0 -0
  10. data/app/assets/images/formats/msword.png +0 -0
  11. data/app/assets/images/formats/pdf.png +0 -0
  12. data/app/assets/images/formats/plain.png +0 -0
  13. data/app/assets/images/formats/rar.png +0 -0
  14. data/app/assets/images/formats/vnd.ms-powerpoint.png +0 -0
  15. data/app/assets/images/formats/zip.png +0 -0
  16. data/app/assets/javascripts/documents.js +42 -0
  17. data/app/assets/stylesheets/documents.css +96 -0
  18. data/app/controllers/audios_controller.rb +19 -0
  19. data/app/controllers/documents_controller.rb +42 -0
  20. data/app/controllers/pictures_controller.rb +18 -0
  21. data/app/controllers/videos_controller.rb +22 -0
  22. data/app/helpers/documents_helper.rb +28 -0
  23. data/app/models/audio.rb +3 -0
  24. data/app/models/document.rb +35 -0
  25. data/app/models/picture.rb +6 -0
  26. data/app/models/video.rb +15 -0
  27. data/app/views/audios/_audio.html.erb +23 -0
  28. data/app/views/audios/_index.html.erb +22 -0
  29. data/app/views/audios/index.html.erb +20 -0
  30. data/app/views/documents/_document.html.erb +19 -0
  31. data/app/views/documents/_index.html.erb +22 -0
  32. data/app/views/documents/_new.html.erb +5 -0
  33. data/app/views/documents/index.html.erb +20 -0
  34. data/app/views/pictures/_index.html.erb +22 -0
  35. data/app/views/pictures/_picture.html.erb +19 -0
  36. data/app/views/pictures/index.html.erb +20 -0
  37. data/app/views/toolbar/_home_menu_options.html.erb +33 -0
  38. data/app/views/toolbar/_uploads_menu.html.erb +21 -0
  39. data/app/views/videos/_index.html.erb +22 -0
  40. data/app/views/videos/_video.html.erb +23 -0
  41. data/app/views/videos/index.html.erb +20 -0
  42. data/app/worker/videoencoder.rb +7 -0
  43. data/config/locales/en.yml +22 -0
  44. data/config/routes.rb +9 -0
  45. data/db/migrate/20110615143707_create_social_stream_documents.rb +24 -0
  46. data/lib/generators/social_stream/documents/install_generator.rb +11 -0
  47. data/lib/social_stream/documents/engine.rb +18 -0
  48. data/lib/social_stream-documents.rb +10 -0
  49. data/social_stream-documents.gemspec +24 -0
  50. data/spec/dummy/Rakefile +7 -0
  51. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  52. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  53. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  54. data/spec/dummy/config/application.rb +45 -0
  55. data/spec/dummy/config/boot.rb +10 -0
  56. data/spec/dummy/config/database.yml +22 -0
  57. data/spec/dummy/config/environment.rb +5 -0
  58. data/spec/dummy/config/environments/development.rb +26 -0
  59. data/spec/dummy/config/environments/production.rb +49 -0
  60. data/spec/dummy/config/environments/test.rb +35 -0
  61. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  62. data/spec/dummy/config/initializers/inflections.rb +10 -0
  63. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  64. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  65. data/spec/dummy/config/initializers/session_store.rb +8 -0
  66. data/spec/dummy/config/locales/en.yml +5 -0
  67. data/spec/dummy/config/routes.rb +58 -0
  68. data/spec/dummy/config.ru +4 -0
  69. data/spec/dummy/public/404.html +26 -0
  70. data/spec/dummy/public/422.html +26 -0
  71. data/spec/dummy/public/500.html +26 -0
  72. data/spec/dummy/public/favicon.ico +0 -0
  73. data/spec/dummy/public/javascripts/application.js +2 -0
  74. data/spec/dummy/public/javascripts/controls.js +965 -0
  75. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  76. data/spec/dummy/public/javascripts/effects.js +1123 -0
  77. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  78. data/spec/dummy/public/javascripts/rails.js +191 -0
  79. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  80. data/spec/dummy/script/rails +6 -0
  81. data/spec/integration/navigation_spec.rb +9 -0
  82. data/spec/socialstream_documents_spec.rb +7 -0
  83. data/spec/spec_helper.rb +33 -0
  84. metadata +296 -0
@@ -0,0 +1,191 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+
176
+ Ajax.Responders.register({
177
+ onCreate: function(request) {
178
+ var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
179
+
180
+ if (csrf_meta_tag) {
181
+ var header = 'X-CSRF-Token',
182
+ token = csrf_meta_tag.readAttribute('content');
183
+
184
+ if (!request.options.requestHeaders) {
185
+ request.options.requestHeaders = {};
186
+ }
187
+ request.options.requestHeaders[header] = token;
188
+ }
189
+ }
190
+ });
191
+ })();
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Navigation" do
4
+ include Capybara
5
+
6
+ it "should be a valid app" do
7
+ ::Rails.application.should be_a(Dummy::Application)
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe SocialStream::Documents do
4
+ it "should be valid" do
5
+ SocialStream::Documents.should be_a(Module)
6
+ end
7
+ end
@@ -0,0 +1,33 @@
1
+ # Configure Rails Envinronment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+ require "rspec/rails"
7
+
8
+ ActionMailer::Base.delivery_method = :test
9
+ ActionMailer::Base.perform_deliveries = true
10
+ ActionMailer::Base.default_url_options[:host] = "test.com"
11
+
12
+ Rails.backtrace_cleaner.remove_silencers!
13
+
14
+ # Configure capybara for integration testing
15
+ require "capybara/rails"
16
+ Capybara.default_driver = :rack_test
17
+ Capybara.default_selector = :css
18
+
19
+ # Run any available migration
20
+ ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
21
+
22
+ # Load support files
23
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
24
+
25
+ RSpec.configure do |config|
26
+ # Remove this line if you don't want RSpec's should and should_not
27
+ # methods or matchers
28
+ require 'rspec/expectations'
29
+ config.include RSpec::Matchers
30
+
31
+ # == Mock Framework
32
+ config.mock_with :rspec
33
+ end
metadata ADDED
@@ -0,0 +1,296 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: social_stream-documents
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - "V\xC3\xADctor S\xC3\xA1nchez Belmar"
14
+ - GING - DIT - UPM
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2011-06-30 00:00:00 +02:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: social_stream-base
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ hash: 7
31
+ segments:
32
+ - 0
33
+ - 6
34
+ - 0
35
+ version: 0.6.0
36
+ type: :runtime
37
+ version_requirements: *id001
38
+ - !ruby/object:Gem::Dependency
39
+ name: paperclip-ffmpeg
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ hash: 7
47
+ segments:
48
+ - 0
49
+ - 6
50
+ - 0
51
+ version: 0.6.0
52
+ type: :runtime
53
+ version_requirements: *id002
54
+ - !ruby/object:Gem::Dependency
55
+ name: rails
56
+ prerelease: false
57
+ requirement: &id003 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - "="
61
+ - !ruby/object:Gem::Version
62
+ hash: 15424109
63
+ segments:
64
+ - 3
65
+ - 1
66
+ - 0
67
+ - rc
68
+ - 4
69
+ version: 3.1.0.rc4
70
+ type: :development
71
+ version_requirements: *id003
72
+ - !ruby/object:Gem::Dependency
73
+ name: sqlite3-ruby
74
+ prerelease: false
75
+ requirement: &id004 !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ hash: 3
81
+ segments:
82
+ - 0
83
+ version: "0"
84
+ type: :development
85
+ version_requirements: *id004
86
+ - !ruby/object:Gem::Dependency
87
+ name: ruby-debug
88
+ prerelease: false
89
+ requirement: &id005 !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ hash: 49
95
+ segments:
96
+ - 0
97
+ - 10
98
+ - 3
99
+ version: 0.10.3
100
+ type: :development
101
+ version_requirements: *id005
102
+ - !ruby/object:Gem::Dependency
103
+ name: rspec-rails
104
+ prerelease: false
105
+ requirement: &id006 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ hash: 27
111
+ segments:
112
+ - 2
113
+ - 5
114
+ - 0
115
+ version: 2.5.0
116
+ type: :development
117
+ version_requirements: *id006
118
+ - !ruby/object:Gem::Dependency
119
+ name: factory_girl
120
+ prerelease: false
121
+ requirement: &id007 !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ hash: 31
127
+ segments:
128
+ - 1
129
+ - 3
130
+ - 2
131
+ version: 1.3.2
132
+ type: :development
133
+ version_requirements: *id007
134
+ - !ruby/object:Gem::Dependency
135
+ name: forgery
136
+ prerelease: false
137
+ requirement: &id008 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ~>
141
+ - !ruby/object:Gem::Version
142
+ hash: 31
143
+ segments:
144
+ - 0
145
+ - 3
146
+ - 6
147
+ version: 0.3.6
148
+ type: :development
149
+ version_requirements: *id008
150
+ - !ruby/object:Gem::Dependency
151
+ name: capybara
152
+ prerelease: false
153
+ requirement: &id009 !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ~>
157
+ - !ruby/object:Gem::Version
158
+ hash: 1
159
+ segments:
160
+ - 0
161
+ - 3
162
+ - 9
163
+ version: 0.3.9
164
+ type: :development
165
+ version_requirements: *id009
166
+ description: |-
167
+ Social Stream is a Ruby on Rails engine providing your application with social networking features and activity streams.
168
+
169
+ This gem allow you upload almost any kind of file as new social stream activity.
170
+ email: v.sanchezbelmar@gmail.com
171
+ executables: []
172
+
173
+ extensions: []
174
+
175
+ extra_rdoc_files: []
176
+
177
+ files:
178
+ - .gitignore
179
+ - Gemfile
180
+ - MIT-LICENSE
181
+ - README.rdoc
182
+ - Rakefile
183
+ - app/assets/images/btn/document.png
184
+ - app/assets/images/formats/default.png
185
+ - app/assets/images/formats/mp3.png
186
+ - app/assets/images/formats/msexcel.png
187
+ - app/assets/images/formats/msword.png
188
+ - app/assets/images/formats/pdf.png
189
+ - app/assets/images/formats/plain.png
190
+ - app/assets/images/formats/rar.png
191
+ - app/assets/images/formats/vnd.ms-powerpoint.png
192
+ - app/assets/images/formats/zip.png
193
+ - app/assets/javascripts/documents.js
194
+ - app/assets/stylesheets/documents.css
195
+ - app/controllers/audios_controller.rb
196
+ - app/controllers/documents_controller.rb
197
+ - app/controllers/pictures_controller.rb
198
+ - app/controllers/videos_controller.rb
199
+ - app/helpers/documents_helper.rb
200
+ - app/models/audio.rb
201
+ - app/models/document.rb
202
+ - app/models/picture.rb
203
+ - app/models/video.rb
204
+ - app/views/audios/_audio.html.erb
205
+ - app/views/audios/_index.html.erb
206
+ - app/views/audios/index.html.erb
207
+ - app/views/documents/_document.html.erb
208
+ - app/views/documents/_index.html.erb
209
+ - app/views/documents/_new.html.erb
210
+ - app/views/documents/index.html.erb
211
+ - app/views/pictures/_index.html.erb
212
+ - app/views/pictures/_picture.html.erb
213
+ - app/views/pictures/index.html.erb
214
+ - app/views/toolbar/_home_menu_options.html.erb
215
+ - app/views/toolbar/_uploads_menu.html.erb
216
+ - app/views/videos/_index.html.erb
217
+ - app/views/videos/_video.html.erb
218
+ - app/views/videos/index.html.erb
219
+ - app/worker/videoencoder.rb
220
+ - config/locales/en.yml
221
+ - config/routes.rb
222
+ - db/migrate/20110615143707_create_social_stream_documents.rb
223
+ - lib/generators/social_stream/documents/install_generator.rb
224
+ - lib/social_stream-documents.rb
225
+ - lib/social_stream/documents/engine.rb
226
+ - social_stream-documents.gemspec
227
+ - spec/dummy/Rakefile
228
+ - spec/dummy/app/controllers/application_controller.rb
229
+ - spec/dummy/app/helpers/application_helper.rb
230
+ - spec/dummy/app/views/layouts/application.html.erb
231
+ - spec/dummy/config.ru
232
+ - spec/dummy/config/application.rb
233
+ - spec/dummy/config/boot.rb
234
+ - spec/dummy/config/database.yml
235
+ - spec/dummy/config/environment.rb
236
+ - spec/dummy/config/environments/development.rb
237
+ - spec/dummy/config/environments/production.rb
238
+ - spec/dummy/config/environments/test.rb
239
+ - spec/dummy/config/initializers/backtrace_silencers.rb
240
+ - spec/dummy/config/initializers/inflections.rb
241
+ - spec/dummy/config/initializers/mime_types.rb
242
+ - spec/dummy/config/initializers/secret_token.rb
243
+ - spec/dummy/config/initializers/session_store.rb
244
+ - spec/dummy/config/locales/en.yml
245
+ - spec/dummy/config/routes.rb
246
+ - spec/dummy/public/404.html
247
+ - spec/dummy/public/422.html
248
+ - spec/dummy/public/500.html
249
+ - spec/dummy/public/favicon.ico
250
+ - spec/dummy/public/javascripts/application.js
251
+ - spec/dummy/public/javascripts/controls.js
252
+ - spec/dummy/public/javascripts/dragdrop.js
253
+ - spec/dummy/public/javascripts/effects.js
254
+ - spec/dummy/public/javascripts/prototype.js
255
+ - spec/dummy/public/javascripts/rails.js
256
+ - spec/dummy/public/stylesheets/.gitkeep
257
+ - spec/dummy/script/rails
258
+ - spec/integration/navigation_spec.rb
259
+ - spec/socialstream_documents_spec.rb
260
+ - spec/spec_helper.rb
261
+ has_rdoc: true
262
+ homepage: http://github.com/ging/social_stream-documents
263
+ licenses: []
264
+
265
+ post_install_message:
266
+ rdoc_options: []
267
+
268
+ require_paths:
269
+ - lib
270
+ required_ruby_version: !ruby/object:Gem::Requirement
271
+ none: false
272
+ requirements:
273
+ - - ">="
274
+ - !ruby/object:Gem::Version
275
+ hash: 3
276
+ segments:
277
+ - 0
278
+ version: "0"
279
+ required_rubygems_version: !ruby/object:Gem::Requirement
280
+ none: false
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ hash: 3
285
+ segments:
286
+ - 0
287
+ version: "0"
288
+ requirements: []
289
+
290
+ rubyforge_project:
291
+ rubygems_version: 1.5.2
292
+ signing_key:
293
+ specification_version: 3
294
+ summary: File capabilities for Social Stream, the core for building social network websites
295
+ test_files: []
296
+