storage_room 0.3.16 → 0.3.17
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/History.txt +3 -0
- data/TODO +2 -0
- data/VERSION +1 -1
- data/lib/storage_room/accessors.rb +151 -148
- data/lib/storage_room/identity_map.rb +21 -21
- data/storage_room.gemspec +2 -2
- metadata +65 -71
data/History.txt
CHANGED
data/TODO
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.17
|
@@ -9,172 +9,39 @@ module StorageRoom
|
|
9
9
|
self.send(:define_model_callbacks, :initialize_from_response_data)
|
10
10
|
end
|
11
11
|
|
12
|
-
module InstanceMethods
|
13
|
-
# Optionally pass attributes to set up the object
|
14
|
-
def initialize(hash={})
|
15
|
-
self.attributes = hash
|
16
|
-
end
|
17
|
-
|
18
|
-
# Shortcut to get an attribute.
|
19
|
-
def [](name)
|
20
|
-
self.response_data[name]
|
21
|
-
end
|
22
|
-
|
23
|
-
# Takes a response data hash, saves it in the record and initializes the class from the response data
|
24
|
-
def set_from_response_data(hash)
|
25
|
-
self.response_data = hash
|
26
|
-
self.initialize_from_response_data
|
27
|
-
self
|
28
|
-
end
|
29
|
-
|
30
|
-
# Return all of the objects attributes
|
31
|
-
def response_data
|
32
|
-
@_response_data ||= Hash.new.with_indifferent_access
|
33
|
-
end
|
34
|
-
|
35
|
-
# Set the objects attributes with a hash. Only attributes passed in the hash are changed, existing ones are not overridden.
|
36
|
-
def response_data=(hash = {})
|
37
|
-
response_data.merge!(hash)
|
38
|
-
end
|
39
|
-
|
40
|
-
# The attributes as they were defined with key, one, many
|
41
|
-
def attributes
|
42
|
-
@_attributes ||= Hash.new.with_indifferent_access
|
43
|
-
end
|
44
|
-
|
45
|
-
def attributes=(args = {})
|
46
|
-
attributes.merge!(args)
|
47
|
-
end
|
48
|
-
|
49
|
-
def as_json(args = {}) # :nodoc:
|
50
|
-
to_hash(args)
|
51
|
-
end
|
52
|
-
|
53
|
-
# ActiveSupport seemed to cause problems when just using as_json, so using to_hash
|
54
|
-
def to_hash(args = {}) # :nodoc:
|
55
|
-
args ||= {}
|
56
|
-
hash = {}
|
57
|
-
|
58
|
-
self.attributes.each do |name, value|
|
59
|
-
hash[name] = if value.is_a?(::Array)
|
60
|
-
value.map {|x| x.respond_to?(:to_hash) ? call_method_with_optional_parameters(x, :to_hash, :nested => true) : x}
|
61
|
-
elsif value.respond_to?(:to_hash)
|
62
|
-
call_method_with_optional_parameters(value, :to_hash, :nested => true)
|
63
|
-
elsif value.respond_to?(:as_json)
|
64
|
-
value.as_json(:nested => true)
|
65
|
-
else
|
66
|
-
value
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
hash
|
71
|
-
end
|
72
|
-
|
73
|
-
def inspect # :nodoc:
|
74
|
-
body = attributes.map{|k, v| "#{k}: #{attribute_for_inspect(v)}"}.join(', ')
|
75
|
-
"#<#{self.class} #{body}>"
|
76
|
-
end
|
77
|
-
|
78
|
-
# Reset an object to its initial state with all attributes unset
|
79
|
-
def reset!
|
80
|
-
@_response_data = Hash.new.with_indifferent_access
|
81
|
-
@_attributes = Hash.new.with_indifferent_access
|
82
|
-
true
|
83
|
-
end
|
84
|
-
|
85
|
-
# Has a Resource been loaded from the API
|
86
|
-
def loaded?
|
87
|
-
self.response_data.present?
|
88
|
-
end
|
89
|
-
|
90
|
-
def proxy? # :nodoc:
|
91
|
-
false
|
92
|
-
end
|
93
|
-
|
94
|
-
protected
|
95
|
-
# Helper to not call to_hash with the wrong number of arguments
|
96
|
-
def call_method_with_optional_parameters(object, method_name, parameters)
|
97
|
-
if object.respond_to?(method_name)
|
98
|
-
if object.method(method_name).arity == -1
|
99
|
-
object.send(method_name, parameters)
|
100
|
-
else
|
101
|
-
object.send(method_name)
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
# Iterate over the response data and initialize the attributes
|
107
|
-
def initialize_from_response_data # :nodoc:
|
108
|
-
_run_initialize_from_response_data_callbacks do
|
109
|
-
self.class.attribute_options_including_superclasses.each do |name, options|
|
110
|
-
value = if options[:type] == :key
|
111
|
-
self[name].blank? ? options[:default] : self[name]
|
112
|
-
elsif options[:type] == :one
|
113
|
-
hash = self[name.to_s]
|
114
|
-
hash && hash['@type'] ? self.class.new_from_response_data(hash) : nil
|
115
|
-
elsif options[:type] == :many
|
116
|
-
response_data[name] && response_data[name].map{|hash| self.class.new_from_response_data(hash)} || []
|
117
|
-
else
|
118
|
-
raise "Invalid type: #{options[:type]}"
|
119
|
-
end
|
120
|
-
|
121
|
-
send("#{name}=", value)
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
def ensure_loaded # :nodoc:
|
127
|
-
if loaded?
|
128
|
-
yield if block_given?
|
129
|
-
else
|
130
|
-
raise StorageRoom::ResourceNotLoadedError
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def attribute_for_inspect(value) # :nodoc:
|
135
|
-
if value.is_a?(String) && value.length > 50
|
136
|
-
"#{value[0..50]}...".inspect
|
137
|
-
elsif value.is_a?(Date) || value.is_a?(Time)
|
138
|
-
%("#{value.iso8601}")
|
139
|
-
else
|
140
|
-
value.inspect
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
12
|
module ClassMethods
|
146
13
|
# Is the passed hash of response data a real object or only an association with a URL but no actual data
|
147
14
|
def response_data_is_association?(hash)
|
148
15
|
hash.size == 2 && hash.include?('@type') && hash.include?('url')
|
149
16
|
end
|
150
|
-
|
17
|
+
|
151
18
|
# Load an object with the specified URL from the API
|
152
19
|
def load(url, parameters = {})
|
153
20
|
return nil if url.blank?
|
154
|
-
|
21
|
+
|
155
22
|
StorageRoom.log("Loading #{url}")
|
156
23
|
httparty = get(url, parameters)
|
157
|
-
|
24
|
+
|
158
25
|
handle_critical_response_errors(httparty)
|
159
26
|
new_from_response_data(httparty.parsed_response.first[1])
|
160
27
|
end
|
161
|
-
|
28
|
+
|
162
29
|
# Build an object out of a local file
|
163
30
|
def new_from_json_file(path)
|
164
31
|
json = ::File.read(path)
|
165
32
|
new_from_json_string(json)
|
166
33
|
end
|
167
|
-
|
34
|
+
|
168
35
|
# Build an object out of the POST body
|
169
36
|
def new_from_json_string(json_string)
|
170
37
|
hash = JSON.parse(json_string)
|
171
38
|
new_from_response_data(hash.first[1])
|
172
39
|
end
|
173
|
-
|
40
|
+
|
174
41
|
# Creates a new object of the correct class and initializes it from the response data
|
175
42
|
def new_from_response_data(response_data)
|
176
43
|
object = StorageRoom.class_for_name(response_data['@type']).new.set_from_response_data(response_data)
|
177
|
-
|
44
|
+
|
178
45
|
if object.is_a?(Entry) && !object.loaded? && !object.proxy?
|
179
46
|
StorageRoom.log("Return #{response_data['url']} proxied")
|
180
47
|
Proxy.new(object)
|
@@ -182,13 +49,13 @@ module StorageRoom
|
|
182
49
|
object
|
183
50
|
end
|
184
51
|
end
|
185
|
-
|
52
|
+
|
186
53
|
# Defines a basic key for a Resource
|
187
54
|
def key(name, options = {})
|
188
55
|
options.merge!(:type => :key, :default => nil)
|
189
56
|
define_attribute_methods(name, options)
|
190
57
|
end
|
191
|
-
|
58
|
+
|
192
59
|
# Defines a to-one association for a Resource (embedded or association)
|
193
60
|
def one(name, options = {})
|
194
61
|
options.merge!(:type => :one, :default => nil)
|
@@ -200,32 +67,168 @@ module StorageRoom
|
|
200
67
|
options.merge!(:type => :many, :default => [])
|
201
68
|
define_attribute_methods(name, options)
|
202
69
|
end
|
203
|
-
|
70
|
+
|
204
71
|
# Creates getter and setter for an attribute
|
205
72
|
def define_attribute_methods(name, options) # :nodoc:
|
206
73
|
define_method name do
|
207
74
|
attributes[name] || options[:default]
|
208
75
|
end
|
209
|
-
|
76
|
+
|
210
77
|
define_method "#{name}=" do |object|
|
211
78
|
attributes[name] = object
|
212
79
|
end
|
213
|
-
|
80
|
+
|
214
81
|
self.attribute_options[name] = options
|
215
82
|
end
|
216
|
-
|
83
|
+
|
217
84
|
def attribute_options
|
218
85
|
@attribute_options ||= {}
|
219
86
|
end
|
220
|
-
|
87
|
+
|
221
88
|
def attribute_options_including_superclasses
|
222
89
|
hash = attribute_options.dup
|
223
90
|
hash.merge!(superclass.attribute_options_including_superclasses) if superclass.respond_to?(:attribute_options_including_superclasses)
|
224
|
-
|
91
|
+
|
225
92
|
hash
|
226
93
|
end
|
94
|
+
end# ==========
|
95
|
+
# = Banner =
|
96
|
+
# ==========
|
97
|
+
|
98
|
+
|
99
|
+
# Optionally pass attributes to set up the object
|
100
|
+
def initialize(hash={})
|
101
|
+
self.attributes = hash
|
102
|
+
end
|
103
|
+
|
104
|
+
# Shortcut to get an attribute.
|
105
|
+
def [](name)
|
106
|
+
self.response_data[name]
|
107
|
+
end
|
108
|
+
|
109
|
+
# Takes a response data hash, saves it in the record and initializes the class from the response data
|
110
|
+
def set_from_response_data(hash)
|
111
|
+
self.response_data = hash
|
112
|
+
self.initialize_from_response_data
|
113
|
+
self
|
114
|
+
end
|
115
|
+
|
116
|
+
# Return all of the objects attributes
|
117
|
+
def response_data
|
118
|
+
@_response_data ||= Hash.new.with_indifferent_access
|
119
|
+
end
|
120
|
+
|
121
|
+
# Set the objects attributes with a hash. Only attributes passed in the hash are changed, existing ones are not overridden.
|
122
|
+
def response_data=(hash = {})
|
123
|
+
response_data.merge!(hash)
|
124
|
+
end
|
125
|
+
|
126
|
+
# The attributes as they were defined with key, one, many
|
127
|
+
def attributes
|
128
|
+
@_attributes ||= Hash.new.with_indifferent_access
|
129
|
+
end
|
130
|
+
|
131
|
+
def attributes=(args = {})
|
132
|
+
attributes.merge!(args)
|
133
|
+
end
|
134
|
+
|
135
|
+
def as_json(args = {}) # :nodoc:
|
136
|
+
to_hash(args)
|
137
|
+
end
|
138
|
+
|
139
|
+
# ActiveSupport seemed to cause problems when just using as_json, so using to_hash
|
140
|
+
def to_hash(args = {}) # :nodoc:
|
141
|
+
args ||= {}
|
142
|
+
hash = {}
|
143
|
+
|
144
|
+
self.attributes.each do |name, value|
|
145
|
+
hash[name] = if value.is_a?(::Array)
|
146
|
+
value.map {|x| x.respond_to?(:to_hash) ? call_method_with_optional_parameters(x, :to_hash, :nested => true) : x}
|
147
|
+
elsif value.respond_to?(:to_hash)
|
148
|
+
call_method_with_optional_parameters(value, :to_hash, :nested => true)
|
149
|
+
elsif value.respond_to?(:as_json)
|
150
|
+
value.as_json(:nested => true)
|
151
|
+
else
|
152
|
+
value
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
hash
|
227
157
|
end
|
158
|
+
|
159
|
+
def inspect # :nodoc:
|
160
|
+
body = attributes.map{|k, v| "#{k}: #{attribute_for_inspect(v)}"}.join(', ')
|
161
|
+
"#<#{self.class} #{body}>"
|
162
|
+
end
|
163
|
+
|
164
|
+
# Reset an object to its initial state with all attributes unset
|
165
|
+
def reset!
|
166
|
+
@_response_data = Hash.new.with_indifferent_access
|
167
|
+
@_attributes = Hash.new.with_indifferent_access
|
168
|
+
true
|
169
|
+
end
|
170
|
+
|
171
|
+
# Has a Resource been loaded from the API
|
172
|
+
def loaded?
|
173
|
+
self.response_data.present?
|
174
|
+
end
|
175
|
+
|
176
|
+
def proxy? # :nodoc:
|
177
|
+
false
|
178
|
+
end
|
179
|
+
|
180
|
+
protected
|
181
|
+
# Helper to not call to_hash with the wrong number of arguments
|
182
|
+
def call_method_with_optional_parameters(object, method_name, parameters)
|
183
|
+
if object.respond_to?(method_name)
|
184
|
+
if object.method(method_name).arity == -1
|
185
|
+
object.send(method_name, parameters)
|
186
|
+
else
|
187
|
+
object.send(method_name)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
228
191
|
|
192
|
+
# Iterate over the response data and initialize the attributes
|
193
|
+
def initialize_from_response_data # :nodoc:
|
194
|
+
_run_initialize_from_response_data_callbacks do
|
195
|
+
self.class.attribute_options_including_superclasses.each do |name, options|
|
196
|
+
value = if options[:type] == :key
|
197
|
+
self[name].blank? ? options[:default] : self[name]
|
198
|
+
elsif options[:type] == :one
|
199
|
+
hash = self[name.to_s]
|
200
|
+
hash && hash['@type'] ? self.class.new_from_response_data(hash) : nil
|
201
|
+
elsif options[:type] == :many
|
202
|
+
response_data[name] && response_data[name].map{|hash| self.class.new_from_response_data(hash)} || []
|
203
|
+
else
|
204
|
+
raise "Invalid type: #{options[:type]}"
|
205
|
+
end
|
206
|
+
|
207
|
+
send("#{name}=", value)
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
def ensure_loaded # :nodoc:
|
213
|
+
if loaded?
|
214
|
+
yield if block_given?
|
215
|
+
else
|
216
|
+
raise StorageRoom::ResourceNotLoadedError
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
def attribute_for_inspect(value) # :nodoc:
|
221
|
+
if value.is_a?(String) && value.length > 50
|
222
|
+
"#{value[0..50]}...".inspect
|
223
|
+
elsif value.is_a?(Date) || value.is_a?(Time)
|
224
|
+
%("#{value.iso8601}")
|
225
|
+
else
|
226
|
+
value.inspect
|
227
|
+
end
|
228
|
+
end
|
229
229
|
end
|
230
230
|
|
231
|
+
|
232
|
+
|
233
|
+
|
231
234
|
end
|
@@ -93,29 +93,29 @@ module StorageRoom
|
|
93
93
|
|
94
94
|
end
|
95
95
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
end
|
110
|
-
result
|
96
|
+
|
97
|
+
def identity_map
|
98
|
+
self.class.identity_map
|
99
|
+
end
|
100
|
+
|
101
|
+
def in_identity_map?
|
102
|
+
return false if self[:@url].blank?
|
103
|
+
identity_map.include?(self[:@url])
|
104
|
+
end
|
105
|
+
|
106
|
+
def create(*args)
|
107
|
+
if result = super
|
108
|
+
identity_map[self[:@url]] = self if self.class.identity_map_on?
|
111
109
|
end
|
112
|
-
|
113
|
-
def destroy
|
114
|
-
identity_map.delete(self[:@url]) if self.class.identity_map_on?
|
115
|
-
super
|
116
|
-
end
|
117
|
-
|
110
|
+
result
|
118
111
|
end
|
112
|
+
|
113
|
+
def destroy
|
114
|
+
identity_map.delete(self[:@url]) if self.class.identity_map_on?
|
115
|
+
super
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
data/storage_room.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "storage_room"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.17"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Sascha Konietzke"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2012-01-25"
|
13
13
|
s.description = "StorageRoom is a CMS system for Mobile Applications (iPhone, Android, BlackBerry, ...). This library gives you an ActiveModel-like interface to your data."
|
14
14
|
s.email = "sascha@thriventures.com"
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,94 +1,92 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: storage_room
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.17
|
4
5
|
prerelease:
|
5
|
-
version: 0.3.16
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Sascha Konietzke
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-01-25 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: rspec
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70350538804900 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 1.2.9
|
24
22
|
type: :development
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: webmock
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: *70350538804900
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: webmock
|
27
|
+
requirement: &70350538804400 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
35
33
|
type: :development
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: httparty
|
39
34
|
prerelease: false
|
40
|
-
|
35
|
+
version_requirements: *70350538804400
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: httparty
|
38
|
+
requirement: &70350538803920 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
45
43
|
version: 0.6.1
|
46
44
|
type: :runtime
|
47
|
-
version_requirements: *id003
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: activesupport
|
50
45
|
prerelease: false
|
51
|
-
|
46
|
+
version_requirements: *70350538803920
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: activesupport
|
49
|
+
requirement: &70350538803400 !ruby/object:Gem::Requirement
|
52
50
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
56
54
|
version: 3.0.0
|
57
55
|
type: :runtime
|
58
|
-
version_requirements: *id004
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: activemodel
|
61
56
|
prerelease: false
|
62
|
-
|
57
|
+
version_requirements: *70350538803400
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: activemodel
|
60
|
+
requirement: &70350538802880 !ruby/object:Gem::Requirement
|
63
61
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
67
65
|
version: 3.0.0
|
68
66
|
type: :runtime
|
69
|
-
version_requirements: *id005
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: mime-types
|
72
67
|
prerelease: false
|
73
|
-
|
68
|
+
version_requirements: *70350538802880
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mime-types
|
71
|
+
requirement: &70350538802400 !ruby/object:Gem::Requirement
|
74
72
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version:
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
79
77
|
type: :runtime
|
80
|
-
|
81
|
-
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70350538802400
|
80
|
+
description: StorageRoom is a CMS system for Mobile Applications (iPhone, Android,
|
81
|
+
BlackBerry, ...). This library gives you an ActiveModel-like interface to your data.
|
82
82
|
email: sascha@thriventures.com
|
83
83
|
executables: []
|
84
|
-
|
85
84
|
extensions: []
|
86
|
-
|
87
|
-
extra_rdoc_files:
|
85
|
+
extra_rdoc_files:
|
88
86
|
- LICENSE
|
89
87
|
- README.rdoc
|
90
88
|
- TODO
|
91
|
-
files:
|
89
|
+
files:
|
92
90
|
- History.txt
|
93
91
|
- LICENSE
|
94
92
|
- README.rdoc
|
@@ -195,30 +193,26 @@ files:
|
|
195
193
|
- tasks/storage_room.rake
|
196
194
|
homepage: http://github.com/thriventures/storage_room_gem
|
197
195
|
licenses: []
|
198
|
-
|
199
196
|
post_install_message:
|
200
197
|
rdoc_options: []
|
201
|
-
|
202
|
-
require_paths:
|
198
|
+
require_paths:
|
203
199
|
- lib
|
204
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
200
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
205
201
|
none: false
|
206
|
-
requirements:
|
207
|
-
- -
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
version:
|
210
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
207
|
none: false
|
212
|
-
requirements:
|
213
|
-
- -
|
214
|
-
- !ruby/object:Gem::Version
|
215
|
-
version:
|
208
|
+
requirements:
|
209
|
+
- - ! '>='
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: '0'
|
216
212
|
requirements: []
|
217
|
-
|
218
213
|
rubyforge_project:
|
219
214
|
rubygems_version: 1.8.10
|
220
215
|
signing_key:
|
221
216
|
specification_version: 3
|
222
217
|
summary: StorageRoom API Wrapper (ActiveModel style)
|
223
218
|
test_files: []
|
224
|
-
|