vidibus-resource 0.0.1

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/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
4
+ rdoc
5
+ coverage
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source :gemcutter
2
+
3
+ # Specify your gem's dependencies in vidibus-resource.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,138 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ vidibus-resource (0.0.1)
5
+ rails (~> 3.0.0)
6
+ vidibus-api
7
+ vidibus-service
8
+ vidibus-uuid
9
+
10
+ GEM
11
+ remote: http://rubygems.org/
12
+ specs:
13
+ abstract (1.0.0)
14
+ actionmailer (3.0.3)
15
+ actionpack (= 3.0.3)
16
+ mail (~> 2.2.9)
17
+ actionpack (3.0.3)
18
+ activemodel (= 3.0.3)
19
+ activesupport (= 3.0.3)
20
+ builder (~> 2.1.2)
21
+ erubis (~> 2.6.6)
22
+ i18n (~> 0.4)
23
+ rack (~> 1.2.1)
24
+ rack-mount (~> 0.6.13)
25
+ rack-test (~> 0.5.6)
26
+ tzinfo (~> 0.3.23)
27
+ activemodel (3.0.3)
28
+ activesupport (= 3.0.3)
29
+ builder (~> 2.1.2)
30
+ i18n (~> 0.4)
31
+ activerecord (3.0.3)
32
+ activemodel (= 3.0.3)
33
+ activesupport (= 3.0.3)
34
+ arel (~> 2.0.2)
35
+ tzinfo (~> 0.3.23)
36
+ activeresource (3.0.3)
37
+ activemodel (= 3.0.3)
38
+ activesupport (= 3.0.3)
39
+ activesupport (3.0.3)
40
+ arel (2.0.7)
41
+ bson (1.1.5)
42
+ builder (2.1.2)
43
+ crack (0.1.8)
44
+ diff-lcs (1.1.2)
45
+ erubis (2.6.6)
46
+ abstract (>= 1.0.0)
47
+ httparty (0.6.1)
48
+ crack (= 0.1.8)
49
+ i18n (0.5.0)
50
+ json (1.4.6)
51
+ macaddr (1.0.0)
52
+ mail (2.2.14)
53
+ activesupport (>= 2.3.6)
54
+ i18n (>= 0.4.0)
55
+ mime-types (~> 1.16)
56
+ treetop (~> 1.4.8)
57
+ mime-types (1.16)
58
+ mongo (1.1.5)
59
+ bson (>= 1.1.5)
60
+ mongoid (2.0.0.rc.4)
61
+ activemodel (~> 3.0)
62
+ mongo (~> 1.1.5)
63
+ tzinfo (~> 0.3.22)
64
+ will_paginate (~> 3.0.pre)
65
+ polyglot (0.3.1)
66
+ rack (1.2.1)
67
+ rack-mount (0.6.13)
68
+ rack (>= 1.0.0)
69
+ rack-test (0.5.7)
70
+ rack (>= 1.0)
71
+ rails (3.0.3)
72
+ actionmailer (= 3.0.3)
73
+ actionpack (= 3.0.3)
74
+ activerecord (= 3.0.3)
75
+ activeresource (= 3.0.3)
76
+ activesupport (= 3.0.3)
77
+ bundler (~> 1.0)
78
+ railties (= 3.0.3)
79
+ railties (3.0.3)
80
+ actionpack (= 3.0.3)
81
+ activesupport (= 3.0.3)
82
+ rake (>= 0.8.7)
83
+ thor (~> 0.14.4)
84
+ rake (0.8.7)
85
+ rr (1.0.2)
86
+ rspec (2.0.1)
87
+ rspec-core (~> 2.0.1)
88
+ rspec-expectations (~> 2.0.1)
89
+ rspec-mocks (~> 2.0.1)
90
+ rspec-core (2.0.1)
91
+ rspec-expectations (2.0.1)
92
+ diff-lcs (>= 1.1.2)
93
+ rspec-mocks (2.0.1)
94
+ rspec-core (~> 2.0.1)
95
+ rspec-expectations (~> 2.0.1)
96
+ thor (0.14.6)
97
+ treetop (1.4.9)
98
+ polyglot (>= 0.3.1)
99
+ tzinfo (0.3.24)
100
+ uuid (2.3.1)
101
+ macaddr (~> 1.0)
102
+ vidibus-api (0.0.1)
103
+ vidibus-service
104
+ vidibus-core_extensions (0.3.15)
105
+ vidibus-secure (0.0.3)
106
+ activesupport (~> 3.0.0)
107
+ mongoid (~> 2.0.0.beta.20)
108
+ rack
109
+ vidibus-core_extensions
110
+ vidibus-service (0.0.4)
111
+ httparty
112
+ json
113
+ mongoid (~> 2.0.0.beta.20)
114
+ vidibus-core_extensions
115
+ vidibus-secure
116
+ vidibus-uuid
117
+ vidibus-validate_uri
118
+ vidibus-uuid (0.3.8)
119
+ mongoid (~> 2.0.0.beta.20)
120
+ uuid (~> 2.3.1)
121
+ vidibus-validate_uri (0.1.4)
122
+ rails (~> 3.0.0)
123
+ will_paginate (3.0.pre2)
124
+
125
+ PLATFORMS
126
+ ruby
127
+
128
+ DEPENDENCIES
129
+ bundler (>= 1.0.0)
130
+ rack-test
131
+ rails (~> 3.0.0)
132
+ rake
133
+ rr
134
+ rspec
135
+ vidibus-api
136
+ vidibus-resource!
137
+ vidibus-service
138
+ vidibus-uuid
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Andre Pankratz
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,7 @@
1
+ = vidibus-resource
2
+
3
+ Description goes here.
4
+
5
+ == Copyright
6
+
7
+ Copyright (c) 2011 Andre Pankratz. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ require "bundler"
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require "rake"
5
+ require "rake/rdoctask"
6
+ require "rspec"
7
+ require "rspec/core/rake_task"
8
+
9
+ Rspec::Core::RakeTask.new(:rcov) do |t|
10
+ t.pattern = "spec/**/*_spec.rb"
11
+ t.rcov = true
12
+ t.rcov_opts = ["--exclude", "^spec,/gems/"]
13
+ end
14
+
15
+ Rake::RDocTask.new do |rdoc|
16
+ require File.expand_path("../lib/vidibus/resource/version", __FILE__)
17
+ rdoc.rdoc_dir = "rdoc"
18
+ rdoc.title = "vidibus-resource #{Vidibus::Resource::VERSION}"
19
+ rdoc.rdoc_files.include("README*")
20
+ rdoc.rdoc_files.include("lib/**/*.rb")
21
+ rdoc.options << "--charset=utf-8"
22
+ end
@@ -0,0 +1,49 @@
1
+ class Api::ResourcesController < ApiController
2
+ before_filter :ensure_klass
3
+ before_filter :find_instance
4
+
5
+ # Creates resource consumer on provider.
6
+ def create
7
+ @instance.add_resource_consumer(params["service"])
8
+ render :json => {:resource => @instance.resourceable_hash}
9
+ end
10
+
11
+ # Updates resource on consumer.
12
+ def update
13
+ begin
14
+ @instance.update_resource_attributes(params["resource"])
15
+ render :nothing => true
16
+ rescue => e
17
+ Rails.logger.error 'Error while updating resource consumer: '+e.inspect
18
+ render :json => { :error => e }, :status => :bad_request
19
+ end
20
+ end
21
+
22
+ # Removes a resource consumer from provider
23
+ def destroy
24
+ if @instance.resource_provider?
25
+ @instance.remove_resource_consumer(params["service"])
26
+ else
27
+ # TODO
28
+ end
29
+ render :nothing => true
30
+ end
31
+
32
+ protected
33
+
34
+ def ensure_klass
35
+ begin
36
+ @klass = params[:klass].classify.constantize
37
+ rescue => e
38
+ render :json => { :error => e }, :status => :bad_request
39
+ end
40
+ end
41
+
42
+ def find_instance
43
+ result = @klass.where(:uuid => params[:uuid])
44
+ if @klass.new.respond_to?(:realm_uuid)
45
+ result.and(:realm_uuid => params[:realm])
46
+ end
47
+ @instance = result.first or render(:nothing => true, :status => :not_found)
48
+ end
49
+ end
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ Rails.application.routes.draw do
2
+ post "/api/resources/:klass/:uuid" => "api/resources#create"
3
+ delete "/api/resources/:klass/:uuid" => "api/resources#destroy"
4
+ put "/api/resources/:klass/:uuid" => "api/resources#update"
5
+ end
@@ -0,0 +1,120 @@
1
+ module Vidibus::Resource
2
+ module Consumer
3
+
4
+ class ConfigurationError < StandardError; end
5
+
6
+ module Mongoid
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ include Vidibus::Uuid::Mongoid
11
+
12
+ field :resource_attributes, :type => Hash, :default => {}
13
+ field :uuid
14
+ index :uuid
15
+ validates :uuid, :uuid => true
16
+
17
+ before_create :add_resource_consumer
18
+ before_save :set_resource_attributes
19
+ before_destroy :remove_resource_consumer
20
+ end
21
+
22
+ # Registers this consumer with provider.
23
+ def add_resource_consumer
24
+ response = resource_provider.post("/api/resources/#{self.class.to_s.tableize}/#{uuid}")
25
+ resource = response["resource"]
26
+ self.resource_attributes = resource
27
+ set_resource_attributes(true)
28
+ true # ensure true!
29
+ end
30
+
31
+ # Removes this consumer from provider.
32
+ def remove_resource_consumer
33
+ resource_provider.delete("/api/resources/#{self.class.to_s.tableize}/#{uuid}")
34
+ true # ensure true!
35
+ end
36
+
37
+ # Updates resource attributes.
38
+ # TODO: Update only data that has been changed.
39
+ def update_resource_attributes(data)
40
+ update_attributes(:resource_attributes => data)
41
+ end
42
+
43
+ # Returns a resource provider service.
44
+ def resource_provider
45
+ @resource_provider ||= begin
46
+ service = self.class.instance_variable_get("@resource_provider") or
47
+ raise ConfigurationError.new("No resource provider has been defined. Call #{self.class}.resource_provider(service, realm)")
48
+ realm = self.class.instance_variable_get("@resource_realm") or
49
+ raise ConfigurationError.new("No resource realm has been defined. Call #{self.class}.resource_realm(realm)")
50
+ ::Service.discover(service, realm)
51
+ end
52
+ end
53
+
54
+ protected
55
+
56
+ # Populates attributes of instance from
57
+ # received resource_attributes hash.
58
+ def set_resource_attributes(force = false)
59
+ if resource_attributes_changed? or force == true
60
+ for key, value in resource_attributes
61
+ send("#{key}=", value)
62
+ end
63
+ end
64
+ true # ensure true!
65
+ end
66
+
67
+ # Defines attributes of resource_attributes hash as
68
+ # methods on consumer instance.
69
+ def method_missing(name, *args, &block)
70
+ if name.to_s.match(/(.+)\=$/)
71
+ writer = true
72
+ attribute = $1
73
+ name = "#{attribute}="
74
+ else
75
+ attribute = name.id2name
76
+ end
77
+ if resource_attributes and (value = resource_attributes[attribute])
78
+ self.class.class_eval do
79
+ field attribute.to_sym # Mongoid field
80
+ end
81
+ if writer
82
+ send(name, *args)
83
+ else
84
+ send("#{attribute}=", value)
85
+ send(name)
86
+ end
87
+ else
88
+ super
89
+ end
90
+ end
91
+
92
+ module ClassMethods
93
+
94
+ # Sets up resource provider service type and realm.
95
+ def resource_provider(service, realm = nil)
96
+ @resource_provider = service
97
+ resource_realm(realm) if realm
98
+ end
99
+
100
+ # Sets up realm of resource.
101
+ def resource_realm(realm)
102
+ @resource_realm = realm
103
+ end
104
+
105
+ # Ensures that an instance with given conditions exists.
106
+ def ensure!(conditions)
107
+ self.where(conditions).first || self.create!(conditions)
108
+ end
109
+
110
+ # Remove all intances with given conditions.
111
+ def remove(conditions)
112
+ existing = self.where(conditions).to_a
113
+ for instance in existing
114
+ instance.destroy
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,67 @@
1
+ require "digest/md5"
2
+
3
+ module Vidibus::Resource
4
+ module Provider
5
+ module Mongoid
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ field :resource_consumers, :type => Array, :default => []
10
+ field :resourceable_hash_checksum, :type => Hash
11
+
12
+ before_update :update_resource_consumers
13
+ # before_destroy :destroy_resource_consumers
14
+ end
15
+
16
+ # Adds given resource consumer.
17
+ def add_resource_consumer(service_uuid)
18
+ list = resource_consumers || []
19
+ list << service_uuid
20
+ update_attributes(:resource_consumers => list.uniq)
21
+ end
22
+
23
+ # Removes given resource consumer.
24
+ def remove_resource_consumer(service_uuid)
25
+ self.resource_consumers.delete(service_uuid)
26
+ save
27
+ end
28
+
29
+ def resource_provider?
30
+ true
31
+ end
32
+
33
+ def resource_consumer?
34
+ false
35
+ end
36
+
37
+ # TODO: Handle attributes properly
38
+ def resourceable_hash
39
+ attributes
40
+ end
41
+
42
+ protected
43
+
44
+ # Update resource consumers if significant changes were made.
45
+ # TODO: Send changes only (the resourceable ones)!
46
+ # TODO: Perform update asynchronously
47
+ def update_resource_consumers
48
+ return unless resource_consumers and resource_consumers.any?
49
+ return unless changes.except("resource_consumers", "updated_at").any?
50
+
51
+ hash = resourceable_hash
52
+ hash_checksum = Digest::MD5.hexdigest(hash.to_s)
53
+ unless hash_checksum == resourceable_hash_checksum
54
+ self.resourceable_hash_checksum = hash_checksum
55
+ for service in resource_consumers
56
+ begin
57
+ ::Service.discover(service, realm_uuid).put("/api/resources/#{self.class.to_s.tableize}/#{uuid}", :body => {:resource => hash})
58
+ rescue => e
59
+ Rails.logger.error "An error occurred while updating resource consumer #{service}:"
60
+ Rails.logger.error e.inspect
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,5 @@
1
+ module Vidibus
2
+ module Resource
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,2 @@
1
+ require "resource/provider/mongoid"
2
+ require "resource/consumer/mongoid"
@@ -0,0 +1,11 @@
1
+ require "rails"
2
+ require "vidibus-uuid"
3
+ require "vidibus-secure"
4
+ require "vidibus-api"
5
+
6
+ $:.unshift(File.join(File.dirname(__FILE__), "vidibus"))
7
+ require "resource"
8
+
9
+ module Vidibus::Resource
10
+ class Engine < ::Rails::Engine; end
11
+ end
@@ -0,0 +1,25 @@
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
@@ -0,0 +1,35 @@
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
+ end
14
+ end
15
+
16
+ describe "attributes" do
17
+ it "should be readable" do
18
+ model.name.should eql("Jenny")
19
+ end
20
+
21
+ it "should be writable" do
22
+ model.name = "Sara"
23
+ model.name.should eql("Sara")
24
+ end
25
+
26
+ it "should be persistent" do
27
+ stub(model).add_resource_consumer
28
+ stub(model).set_resource_attributes
29
+ model.save
30
+ model.update_attributes!({:name => "Sara"})
31
+ model.reload
32
+ model.name.should eql("Sara")
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,31 @@
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.0.0"
18
+ s.add_dependency "vidibus-uuid"
19
+ s.add_dependency "vidibus-service"
20
+ s.add_dependency "vidibus-api"
21
+
22
+ s.add_development_dependency "bundler", ">= 1.0.0"
23
+ s.add_development_dependency "rake", ">= 0"
24
+ s.add_development_dependency "rspec", ">= 0"
25
+ s.add_development_dependency "rack-test", ">= 0"
26
+ s.add_development_dependency "rr", ">= 0"
27
+
28
+ s.files = `git ls-files`.split("\n")
29
+ s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
30
+ s.require_path = 'lib'
31
+ end
metadata ADDED
@@ -0,0 +1,214 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vidibus-resource
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - "Andr\xC3\xA9 Pankratz"
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-01-16 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rails
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 0
34
+ version: 3.0.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: vidibus-uuid
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
49
+ type: :runtime
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: vidibus-service
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ type: :runtime
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: vidibus-api
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :runtime
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: bundler
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 23
88
+ segments:
89
+ - 1
90
+ - 0
91
+ - 0
92
+ version: 1.0.0
93
+ type: :development
94
+ version_requirements: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ name: rake
97
+ prerelease: false
98
+ requirement: &id006 !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ hash: 3
104
+ segments:
105
+ - 0
106
+ version: "0"
107
+ type: :development
108
+ version_requirements: *id006
109
+ - !ruby/object:Gem::Dependency
110
+ name: rspec
111
+ prerelease: false
112
+ requirement: &id007 !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ hash: 3
118
+ segments:
119
+ - 0
120
+ version: "0"
121
+ type: :development
122
+ version_requirements: *id007
123
+ - !ruby/object:Gem::Dependency
124
+ name: rack-test
125
+ prerelease: false
126
+ requirement: &id008 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ hash: 3
132
+ segments:
133
+ - 0
134
+ version: "0"
135
+ type: :development
136
+ version_requirements: *id008
137
+ - !ruby/object:Gem::Dependency
138
+ name: rr
139
+ prerelease: false
140
+ requirement: &id009 !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ hash: 3
146
+ segments:
147
+ - 0
148
+ version: "0"
149
+ type: :development
150
+ version_requirements: *id009
151
+ description: Allows creation of proxy objects of remote resources on distributed applications.
152
+ email:
153
+ - andre@vidibus.com
154
+ executables: []
155
+
156
+ extensions: []
157
+
158
+ extra_rdoc_files: []
159
+
160
+ files:
161
+ - .gitignore
162
+ - Gemfile
163
+ - Gemfile.lock
164
+ - LICENSE
165
+ - README.rdoc
166
+ - Rakefile
167
+ - app/controllers/api/resources_controller.rb
168
+ - config/routes.rb
169
+ - lib/vidibus-resource.rb
170
+ - lib/vidibus/resource.rb
171
+ - lib/vidibus/resource/consumer/mongoid.rb
172
+ - lib/vidibus/resource/provider/mongoid.rb
173
+ - lib/vidibus/resource/version.rb
174
+ - spec/spec_helper.rb
175
+ - spec/vidibus/resource/consumer/mongoid_spec.rb
176
+ - vidibus-resource.gemspec
177
+ has_rdoc: true
178
+ homepage: https://github.com/vidibus/vidibus-resource
179
+ licenses: []
180
+
181
+ post_install_message:
182
+ rdoc_options: []
183
+
184
+ require_paths:
185
+ - lib
186
+ required_ruby_version: !ruby/object:Gem::Requirement
187
+ none: false
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ hash: 3
192
+ segments:
193
+ - 0
194
+ version: "0"
195
+ required_rubygems_version: !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ hash: 23
201
+ segments:
202
+ - 1
203
+ - 3
204
+ - 6
205
+ version: 1.3.6
206
+ requirements: []
207
+
208
+ rubyforge_project: vidibus-resource
209
+ rubygems_version: 1.3.7
210
+ signing_key:
211
+ specification_version: 3
212
+ summary: Provides handling of remote resources
213
+ test_files: []
214
+