vidibus-resource 0.1.0 → 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.
- data/README.md +20 -0
- data/Rakefile +8 -5
- data/lib/vidibus/resource/consumer/mongoid.rb +1 -12
- data/lib/vidibus/resource/provider/mongoid.rb +3 -12
- data/lib/vidibus/resource/version.rb +1 -1
- data/lib/vidibus/resource.rb +2 -8
- data/lib/vidibus-resource.rb +2 -2
- metadata +74 -38
- data/.gitignore +0 -6
- data/Gemfile +0 -4
- data/README.rdoc +0 -16
- data/spec/spec_helper.rb +0 -25
- data/spec/vidibus/resource/consumer/mongoid_spec.rb +0 -36
- data/vidibus-resource.gemspec +0 -34
data/README.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Vidibus::Resource [](http://stillmaintained.com/vidibus/vidibus-resource)
|
2
|
+
|
3
|
+
Allows creation of proxy objects of remote resources on distributed applications.
|
4
|
+
|
5
|
+
This gem is part of [Vidibus](http://vidibus.org), an open source toolset for building distributed (video) applications.
|
6
|
+
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add `gem "vidibus-resource"` to your Gemfile. Then call `bundle install` on your console.
|
11
|
+
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
DESCRIBE
|
16
|
+
|
17
|
+
|
18
|
+
## Copyright
|
19
|
+
|
20
|
+
© 2011 Andre Pankratz. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
require "bundler"
|
2
|
-
Bundler::GemHelper.install_tasks
|
3
|
-
|
4
|
-
require "rake"
|
5
2
|
require "rdoc/task"
|
6
3
|
require "rspec"
|
7
4
|
require "rspec/core/rake_task"
|
8
5
|
|
6
|
+
Bundler::GemHelper.install_tasks
|
7
|
+
|
8
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
9
|
+
require "vidibus/resource/version"
|
10
|
+
|
9
11
|
RSpec::Core::RakeTask.new(:rcov) do |t|
|
10
12
|
t.pattern = "spec/**/*_spec.rb"
|
11
13
|
t.rcov = true
|
@@ -13,10 +15,11 @@ RSpec::Core::RakeTask.new(:rcov) do |t|
|
|
13
15
|
end
|
14
16
|
|
15
17
|
Rake::RDocTask.new do |rdoc|
|
16
|
-
require File.expand_path("../lib/vidibus/resource/version", __FILE__)
|
17
18
|
rdoc.rdoc_dir = "rdoc"
|
18
|
-
rdoc.title = "vidibus-
|
19
|
+
rdoc.title = "vidibus-sysinfo #{Vidibus::Resource::VERSION}"
|
19
20
|
rdoc.rdoc_files.include("README*")
|
20
21
|
rdoc.rdoc_files.include("lib/**/*.rb")
|
21
22
|
rdoc.options << "--charset=utf-8"
|
22
23
|
end
|
24
|
+
|
25
|
+
task :default => :rcov
|
@@ -39,8 +39,7 @@ module Vidibus::Resource
|
|
39
39
|
# Updates resource attributes.
|
40
40
|
# TODO: Update only data that has been changed.
|
41
41
|
def update_resource_attributes(data)
|
42
|
-
|
43
|
-
update_attributes(:resource_attributes => data)
|
42
|
+
update_attributes(:resource_attributes => JSON.parse(data))
|
44
43
|
end
|
45
44
|
|
46
45
|
# Returns a resource provider service.
|
@@ -99,16 +98,6 @@ module Vidibus::Resource
|
|
99
98
|
|
100
99
|
private
|
101
100
|
|
102
|
-
# Fix empty arrays
|
103
|
-
def fix_resource_attributes(data)
|
104
|
-
for key, value in data
|
105
|
-
if value === [EMPTY_ARRAY_IDENTIFIER]
|
106
|
-
data[key] = []
|
107
|
-
end
|
108
|
-
end
|
109
|
-
data
|
110
|
-
end
|
111
|
-
|
112
101
|
module ClassMethods
|
113
102
|
|
114
103
|
# Sets up resource provider service type and realm.
|
@@ -39,16 +39,6 @@ module Vidibus::Resource
|
|
39
39
|
attributes
|
40
40
|
end
|
41
41
|
|
42
|
-
# Fix empty arrays
|
43
|
-
def fixed_resourceable_hash
|
44
|
-
for key, value in resourceable_hash
|
45
|
-
if value === []
|
46
|
-
resourceable_hash[key] = [EMPTY_ARRAY_IDENTIFIER]
|
47
|
-
end
|
48
|
-
end
|
49
|
-
resourceable_hash
|
50
|
-
end
|
51
|
-
|
52
42
|
private
|
53
43
|
|
54
44
|
# Update resource consumers if significant changes were made.
|
@@ -58,13 +48,14 @@ module Vidibus::Resource
|
|
58
48
|
return unless resource_consumers and resource_consumers.any?
|
59
49
|
return unless changes.except("resource_consumers", "updated_at").any?
|
60
50
|
|
61
|
-
hash =
|
51
|
+
hash = resourceable_hash
|
62
52
|
hash_checksum = Digest::MD5.hexdigest(hash.to_s)
|
63
53
|
unless hash_checksum == resourceable_hash_checksum
|
64
54
|
self.resourceable_hash_checksum = hash_checksum
|
55
|
+
uri = "/api/resources/#{self.class.to_s.tableize}/#{uuid}"
|
65
56
|
for service in resource_consumers
|
66
57
|
begin
|
67
|
-
::Service.discover(service, realm_uuid).delay.put(
|
58
|
+
::Service.discover(service, realm_uuid).delay.put(uri, :body => {:resource => JSON.generate(hash)})
|
68
59
|
rescue => e
|
69
60
|
Rails.logger.error "An error occurred while updating resource consumer #{service}:"
|
70
61
|
Rails.logger.error e.inspect
|
data/lib/vidibus/resource.rb
CHANGED
data/lib/vidibus-resource.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
+
require "json"
|
1
2
|
require "rails"
|
2
3
|
require "vidibus-uuid"
|
3
4
|
require "vidibus-secure"
|
4
5
|
require "vidibus-api"
|
5
6
|
|
6
|
-
|
7
|
-
require "resource"
|
7
|
+
require "vidibus/resource"
|
8
8
|
|
9
9
|
module Vidibus::Resource
|
10
10
|
class Engine < ::Rails::Engine; end
|
metadata
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vidibus-resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
|
-
-
|
13
|
+
- Andre Pankratz
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-07-14 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
type: :runtime
|
48
48
|
version_requirements: *id002
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
50
|
+
name: json
|
51
51
|
prerelease: false
|
52
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
@@ -61,7 +61,7 @@ dependencies:
|
|
61
61
|
type: :runtime
|
62
62
|
version_requirements: *id003
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name: vidibus-
|
64
|
+
name: vidibus-uuid
|
65
65
|
prerelease: false
|
66
66
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
67
|
none: false
|
@@ -75,7 +75,7 @@ dependencies:
|
|
75
75
|
type: :runtime
|
76
76
|
version_requirements: *id004
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
|
-
name: vidibus-
|
78
|
+
name: vidibus-service
|
79
79
|
prerelease: false
|
80
80
|
requirement: &id005 !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
@@ -89,9 +89,23 @@ dependencies:
|
|
89
89
|
type: :runtime
|
90
90
|
version_requirements: *id005
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
92
|
+
name: vidibus-api
|
93
93
|
prerelease: false
|
94
94
|
requirement: &id006 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
version: "0"
|
103
|
+
type: :runtime
|
104
|
+
version_requirements: *id006
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
name: delayed_job
|
107
|
+
prerelease: false
|
108
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
95
109
|
none: false
|
96
110
|
requirements:
|
97
111
|
- - ~>
|
@@ -102,11 +116,11 @@ dependencies:
|
|
102
116
|
- 0
|
103
117
|
version: "2.0"
|
104
118
|
type: :runtime
|
105
|
-
version_requirements: *
|
119
|
+
version_requirements: *id007
|
106
120
|
- !ruby/object:Gem::Dependency
|
107
121
|
name: delayed_job_mongoid
|
108
122
|
prerelease: false
|
109
|
-
requirement: &
|
123
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
110
124
|
none: false
|
111
125
|
requirements:
|
112
126
|
- - ~>
|
@@ -117,11 +131,11 @@ dependencies:
|
|
117
131
|
- 0
|
118
132
|
version: "1.0"
|
119
133
|
type: :runtime
|
120
|
-
version_requirements: *
|
134
|
+
version_requirements: *id008
|
121
135
|
- !ruby/object:Gem::Dependency
|
122
136
|
name: bundler
|
123
137
|
prerelease: false
|
124
|
-
requirement: &
|
138
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
125
139
|
none: false
|
126
140
|
requirements:
|
127
141
|
- - ">="
|
@@ -133,11 +147,11 @@ dependencies:
|
|
133
147
|
- 0
|
134
148
|
version: 1.0.0
|
135
149
|
type: :development
|
136
|
-
version_requirements: *
|
150
|
+
version_requirements: *id009
|
137
151
|
- !ruby/object:Gem::Dependency
|
138
152
|
name: rake
|
139
153
|
prerelease: false
|
140
|
-
requirement: &
|
154
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
141
155
|
none: false
|
142
156
|
requirements:
|
143
157
|
- - ">="
|
@@ -147,11 +161,11 @@ dependencies:
|
|
147
161
|
- 0
|
148
162
|
version: "0"
|
149
163
|
type: :development
|
150
|
-
version_requirements: *
|
164
|
+
version_requirements: *id010
|
151
165
|
- !ruby/object:Gem::Dependency
|
152
|
-
name:
|
166
|
+
name: rdoc
|
153
167
|
prerelease: false
|
154
|
-
requirement: &
|
168
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
155
169
|
none: false
|
156
170
|
requirements:
|
157
171
|
- - ">="
|
@@ -161,11 +175,11 @@ dependencies:
|
|
161
175
|
- 0
|
162
176
|
version: "0"
|
163
177
|
type: :development
|
164
|
-
version_requirements: *
|
178
|
+
version_requirements: *id011
|
165
179
|
- !ruby/object:Gem::Dependency
|
166
|
-
name:
|
180
|
+
name: rcov
|
167
181
|
prerelease: false
|
168
|
-
requirement: &
|
182
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
169
183
|
none: false
|
170
184
|
requirements:
|
171
185
|
- - ">="
|
@@ -175,11 +189,25 @@ dependencies:
|
|
175
189
|
- 0
|
176
190
|
version: "0"
|
177
191
|
type: :development
|
178
|
-
version_requirements: *
|
192
|
+
version_requirements: *id012
|
193
|
+
- !ruby/object:Gem::Dependency
|
194
|
+
name: rspec
|
195
|
+
prerelease: false
|
196
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
197
|
+
none: false
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
hash: 3
|
202
|
+
segments:
|
203
|
+
- 0
|
204
|
+
version: "0"
|
205
|
+
type: :development
|
206
|
+
version_requirements: *id013
|
179
207
|
- !ruby/object:Gem::Dependency
|
180
208
|
name: rr
|
181
209
|
prerelease: false
|
182
|
-
requirement: &
|
210
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
183
211
|
none: false
|
184
212
|
requirements:
|
185
213
|
- - ">="
|
@@ -189,10 +217,23 @@ dependencies:
|
|
189
217
|
- 0
|
190
218
|
version: "0"
|
191
219
|
type: :development
|
192
|
-
version_requirements: *
|
220
|
+
version_requirements: *id014
|
221
|
+
- !ruby/object:Gem::Dependency
|
222
|
+
name: webmock
|
223
|
+
prerelease: false
|
224
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
hash: 3
|
230
|
+
segments:
|
231
|
+
- 0
|
232
|
+
version: "0"
|
233
|
+
type: :development
|
234
|
+
version_requirements: *id015
|
193
235
|
description: Allows creation of proxy objects of remote resources on distributed applications.
|
194
|
-
email:
|
195
|
-
- andre@vidibus.com
|
236
|
+
email: andre@vidibus.com
|
196
237
|
executables: []
|
197
238
|
|
198
239
|
extensions: []
|
@@ -200,21 +241,16 @@ extensions: []
|
|
200
241
|
extra_rdoc_files: []
|
201
242
|
|
202
243
|
files:
|
203
|
-
- .gitignore
|
204
|
-
- Gemfile
|
205
|
-
- LICENSE
|
206
|
-
- README.rdoc
|
207
|
-
- Rakefile
|
208
|
-
- app/controllers/api/resources_controller.rb
|
209
|
-
- config/routes.rb
|
210
|
-
- lib/vidibus-resource.rb
|
211
|
-
- lib/vidibus/resource.rb
|
212
244
|
- lib/vidibus/resource/consumer/mongoid.rb
|
213
245
|
- lib/vidibus/resource/provider/mongoid.rb
|
214
246
|
- lib/vidibus/resource/version.rb
|
215
|
-
-
|
216
|
-
-
|
217
|
-
-
|
247
|
+
- lib/vidibus/resource.rb
|
248
|
+
- lib/vidibus-resource.rb
|
249
|
+
- app/controllers/api/resources_controller.rb
|
250
|
+
- config/routes.rb
|
251
|
+
- LICENSE
|
252
|
+
- README.md
|
253
|
+
- Rakefile
|
218
254
|
has_rdoc: true
|
219
255
|
homepage: https://github.com/vidibus/vidibus-resource
|
220
256
|
licenses: []
|
data/.gitignore
DELETED
data/Gemfile
DELETED
data/README.rdoc
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
= Vidibus::Resource
|
2
|
-
|
3
|
-
Description goes here.
|
4
|
-
|
5
|
-
|
6
|
-
== TODO
|
7
|
-
|
8
|
-
* Write specs
|
9
|
-
* Allow an individual provider for each resource. Store resource provider and realm on consumer instance.
|
10
|
-
* Don't allow resource consumers without a realm. Ensure realm matches request.
|
11
|
-
* Allow multiple providers for one resource?
|
12
|
-
|
13
|
-
|
14
|
-
== Copyright
|
15
|
-
|
16
|
-
Copyright (c) 2011 Andre Pankratz. See LICENSE for details.
|
data/spec/spec_helper.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
3
|
-
|
4
|
-
require "rubygems"
|
5
|
-
require "rspec"
|
6
|
-
require "mongoid"
|
7
|
-
require "rack/test"
|
8
|
-
require "rr"
|
9
|
-
# require "webmock/rspec"
|
10
|
-
require "vidibus-resource"
|
11
|
-
|
12
|
-
Mongoid.configure do |config|
|
13
|
-
name = "vidibus-resource_test"
|
14
|
-
host = "localhost"
|
15
|
-
config.master = Mongo::Connection.new.db(name)
|
16
|
-
config.logger = nil
|
17
|
-
end
|
18
|
-
|
19
|
-
RSpec.configure do |config|
|
20
|
-
# config.include WebMock
|
21
|
-
config.mock_with :rr
|
22
|
-
config.before(:each) do
|
23
|
-
Mongoid.master.collections.select {|c| c.name !~ /system/}.each(&:drop)
|
24
|
-
end
|
25
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
class Model
|
4
|
-
include Mongoid::Document
|
5
|
-
include Vidibus::Resource::Consumer::Mongoid
|
6
|
-
end
|
7
|
-
|
8
|
-
describe "Vidibus::Resource::Consumer::Mongoid" do
|
9
|
-
|
10
|
-
let(:model) do
|
11
|
-
Model.new.tap do |m|
|
12
|
-
m.resource_attributes = {"name" => "Jenny"}
|
13
|
-
m.set_resource_attributes(true)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe "attributes" do
|
18
|
-
it "should be readable" do
|
19
|
-
model.name.should eql("Jenny")
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should be writable" do
|
23
|
-
model.name = "Sara"
|
24
|
-
model.name.should eql("Sara")
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should be persistent" do
|
28
|
-
stub(model).add_resource_consumer
|
29
|
-
stub(model).set_resource_attributes
|
30
|
-
model.save
|
31
|
-
model.update_attributes!({:name => "Sara"})
|
32
|
-
model.reload
|
33
|
-
model.name.should eql("Sara")
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
data/vidibus-resource.gemspec
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path("../lib/vidibus/resource/version", __FILE__)
|
3
|
-
|
4
|
-
Gem::Specification.new do |s|
|
5
|
-
s.name = "vidibus-resource"
|
6
|
-
s.version = Vidibus::Resource::VERSION
|
7
|
-
s.platform = Gem::Platform::RUBY
|
8
|
-
s.authors = ["André Pankratz"]
|
9
|
-
s.email = ["andre@vidibus.com"]
|
10
|
-
s.homepage = "https://github.com/vidibus/vidibus-resource"
|
11
|
-
s.summary = "Provides handling of remote resources"
|
12
|
-
s.description = "Allows creation of proxy objects of remote resources on distributed applications."
|
13
|
-
|
14
|
-
s.required_rubygems_version = ">= 1.3.6"
|
15
|
-
s.rubyforge_project = "vidibus-resource"
|
16
|
-
|
17
|
-
s.add_dependency "rails", "~> 3"
|
18
|
-
s.add_dependency "mongoid", "~> 2"
|
19
|
-
s.add_dependency "vidibus-uuid"
|
20
|
-
s.add_dependency "vidibus-service"
|
21
|
-
s.add_dependency "vidibus-api"
|
22
|
-
s.add_dependency "delayed_job", "~> 2.0"
|
23
|
-
s.add_dependency "delayed_job_mongoid", "~> 1.0"
|
24
|
-
|
25
|
-
s.add_development_dependency "bundler", ">= 1.0.0"
|
26
|
-
s.add_development_dependency "rake", ">= 0"
|
27
|
-
s.add_development_dependency "rspec", ">= 0"
|
28
|
-
s.add_development_dependency "rack-test", ">= 0"
|
29
|
-
s.add_development_dependency "rr", ">= 0"
|
30
|
-
|
31
|
-
s.files = `git ls-files`.split("\n")
|
32
|
-
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
33
|
-
s.require_path = 'lib'
|
34
|
-
end
|