api_resource 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -23,7 +23,7 @@ group :development do
23
23
  gem 'guard'
24
24
  gem 'guard-rspec'
25
25
  gem 'mocha'
26
- gem "bundler", "~> 1.0.0"
26
+ gem "bundler"
27
27
  gem "jeweler", "~> 1.6.4"
28
28
  gem 'activerecord', '3.0.9'
29
29
  gem "sqlite3"
data/Gemfile.lock CHANGED
@@ -136,7 +136,7 @@ PLATFORMS
136
136
 
137
137
  DEPENDENCIES
138
138
  activerecord (= 3.0.9)
139
- bundler (~> 1.0.0)
139
+ bundler
140
140
  colorize
141
141
  differ
142
142
  factory_girl
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.5
1
+ 0.2.6
data/api_resource.gemspec CHANGED
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{api_resource}
8
- s.version = "0.2.5"
7
+ s.name = "api_resource"
8
+ s.version = "0.2.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Ethan Langevin}]
12
- s.date = %q{2012-01-20}
13
- s.description = %q{A replacement for ActiveResource for RESTful APIs that handles associated object and multiple data sources}
14
- s.email = %q{ejl6266@gmail.com}
11
+ s.authors = ["Ethan Langevin"]
12
+ s.date = "2012-03-15"
13
+ s.description = "A replacement for ActiveResource for RESTful APIs that handles associated object and multiple data sources"
14
+ s.email = "ejl6266@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.rdoc"
@@ -59,6 +59,7 @@ Gem::Specification.new do |s|
59
59
  "lib/api_resource/observing.rb",
60
60
  "lib/api_resource/railtie.rb",
61
61
  "lib/api_resource/scopes.rb",
62
+ "nohup.out",
62
63
  "spec/lib/associations_spec.rb",
63
64
  "spec/lib/attributes_spec.rb",
64
65
  "spec/lib/base_spec.rb",
@@ -76,11 +77,11 @@ Gem::Specification.new do |s|
76
77
  "spec/support/requests/test_resource_requests.rb",
77
78
  "spec/support/test_resource.rb"
78
79
  ]
79
- s.homepage = %q{http://github.com/ejlangev/resource}
80
- s.licenses = [%q{MIT}]
81
- s.require_paths = [%q{lib}]
82
- s.rubygems_version = %q{1.8.8}
83
- s.summary = %q{A replacement for ActiveResource for RESTful APIs that handles associated object and multiple data sources}
80
+ s.homepage = "http://github.com/ejlangev/resource"
81
+ s.licenses = ["MIT"]
82
+ s.require_paths = ["lib"]
83
+ s.rubygems_version = "1.8.11"
84
+ s.summary = "A replacement for ActiveResource for RESTful APIs that handles associated object and multiple data sources"
84
85
 
85
86
  if s.respond_to? :specification_version then
86
87
  s.specification_version = 3
@@ -103,7 +104,7 @@ Gem::Specification.new do |s|
103
104
  s.add_development_dependency(%q<guard>, [">= 0"])
104
105
  s.add_development_dependency(%q<guard-rspec>, [">= 0"])
105
106
  s.add_development_dependency(%q<mocha>, [">= 0"])
106
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
107
+ s.add_development_dependency(%q<bundler>, [">= 0"])
107
108
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
108
109
  s.add_development_dependency(%q<activerecord>, ["= 3.0.9"])
109
110
  s.add_development_dependency(%q<sqlite3>, [">= 0"])
@@ -125,7 +126,7 @@ Gem::Specification.new do |s|
125
126
  s.add_dependency(%q<guard>, [">= 0"])
126
127
  s.add_dependency(%q<guard-rspec>, [">= 0"])
127
128
  s.add_dependency(%q<mocha>, [">= 0"])
128
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
129
+ s.add_dependency(%q<bundler>, [">= 0"])
129
130
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
130
131
  s.add_dependency(%q<activerecord>, ["= 3.0.9"])
131
132
  s.add_dependency(%q<sqlite3>, [">= 0"])
@@ -148,7 +149,7 @@ Gem::Specification.new do |s|
148
149
  s.add_dependency(%q<guard>, [">= 0"])
149
150
  s.add_dependency(%q<guard-rspec>, [">= 0"])
150
151
  s.add_dependency(%q<mocha>, [">= 0"])
151
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
152
+ s.add_dependency(%q<bundler>, [">= 0"])
152
153
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
153
154
  s.add_dependency(%q<activerecord>, ["= 3.0.9"])
154
155
  s.add_dependency(%q<sqlite3>, [">= 0"])
@@ -70,7 +70,11 @@ module ApiResource
70
70
  def inspect
71
71
  self.internal_object.inspect
72
72
  end
73
-
73
+
74
+ def ==(other)
75
+ raise "Not Implemented: This method must be implemented in a subclass"
76
+ end
77
+
74
78
  protected
75
79
  # This method loads a particular scope with a set of options from the remote server
76
80
  def load_scope_with_options(scope, options)
@@ -15,6 +15,16 @@ module ApiResource
15
15
  def each(*args, &block)
16
16
  self.internal_object.each(*args, &block)
17
17
  end
18
+
19
+ def ==(other)
20
+ return false if self.class != other.class
21
+ if self.internal_object.is_a?(Array)
22
+ self.internal_object.sort.each_with_index do |elem, i|
23
+ return false if other.internal_object.sort[i].attributes != elem.attributes
24
+ end
25
+ end
26
+ return true
27
+ end
18
28
 
19
29
  def serializable_hash(options)
20
30
  self.internal_object.collect{|obj| obj.serializable_hash(options) }
@@ -24,6 +24,12 @@ module ApiResource
24
24
  def present?
25
25
  return @internal_object.present?
26
26
  end
27
+
28
+ def ==(other)
29
+ return false if self.class != other.class
30
+ return false if other.internal_object.attributes != self.internal_object.attributes
31
+ return true
32
+ end
27
33
 
28
34
  protected
29
35
  def load_scope_with_options(scope, options)
@@ -97,7 +97,7 @@ module ApiResource
97
97
 
98
98
  def association_names
99
99
  # structure is {:has_many => {"myname" => "ClassName"}}
100
- self.related_objects.clone.delete_if{|k,v| k.to_s == "scope"}.collect{|k,v| v.keys.first.to_sym}
100
+ self.related_objects.clone.delete_if{|k,v| k.to_s == "scope"}.collect{|k,v| v.keys.collect(&:to_sym)}.flatten
101
101
  end
102
102
 
103
103
  def association_class_name(assoc)
@@ -116,13 +116,18 @@ module ApiResource
116
116
 
117
117
  protected
118
118
  def define_association_as_attribute(assoc_type, assoc_name)
119
+ # set up dirty tracking for associations
120
+
119
121
  self.class_eval <<-EOE, __FILE__, __LINE__ + 1
120
122
  def #{assoc_name}
121
123
  self.attributes[:#{assoc_name}] ||= #{self.association_types[assoc_type.to_sym].to_s.classify}ObjectProxy.new(self.association_class_name('#{assoc_name}'), nil, self)
122
124
  end
123
125
  def #{assoc_name}=(val)
124
- #{assoc_name}_will_change! unless self.#{assoc_name}.internal_object == val
126
+ # get old internal object
127
+ old_internal_object = self.#{assoc_name}.internal_object
125
128
  self.#{assoc_name}.internal_object = val
129
+ #{assoc_name}_will_change! unless self.#{assoc_name} == old_internal_object
130
+ self.#{assoc_name}.internal_object
126
131
  end
127
132
  def #{assoc_name}?
128
133
  self.#{assoc_name}.internal_object.present?
@@ -36,15 +36,12 @@ module ApiResource
36
36
  module ClassMethods
37
37
 
38
38
  def define_attributes(*args)
39
- # This is provided by ActiveModel::AttributeMethods, it should define the basic methods
40
- # but we need to override all the setters so we do dirty tracking
41
- define_attribute_methods args
42
39
  args.each do |arg|
43
40
  if arg.is_a?(Array)
44
41
  self.define_attribute_type(arg.first, arg.second)
45
42
  arg = arg.first
46
43
  end
47
-
44
+
48
45
  self.attribute_names << arg.to_sym
49
46
  self.public_attribute_names << arg.to_sym
50
47
 
@@ -70,8 +67,13 @@ module ApiResource
70
67
  end
71
68
 
72
69
  def define_protected_attributes(*args)
73
- define_attribute_methods args
74
70
  args.each do |arg|
71
+
72
+ if arg.is_a?(Array)
73
+ self.define_attribute_type(arg.first, arg.second)
74
+ arg = arg.first
75
+ end
76
+
75
77
  self.attribute_names << arg.to_sym
76
78
  self.protected_attribute_names << arg.to_sym
77
79
 
@@ -39,11 +39,19 @@ module ApiResource
39
39
  def set_class_attributes_upon_load
40
40
  return true if self == ApiResource::Base
41
41
  begin
42
- class_data = self.connection.get(self.new_element_path, self.headers)
42
+ class_data = self.connection.get(
43
+ self.new_element_path, self.headers
44
+ )
43
45
  # Attributes go first
44
46
  if class_data["attributes"]
45
- define_attributes *(class_data["attributes"]["public"] || [])
46
- define_protected_attributes *(class_data["attributes"]["protected"] || [])
47
+
48
+ define_attributes(
49
+ *(class_data["attributes"]["public"] || [])
50
+ )
51
+ define_protected_attributes(
52
+ *(class_data["attributes"]["protected"] || [])
53
+ )
54
+
47
55
  end
48
56
  # Then scopes
49
57
  if class_data["scopes"]
@@ -59,13 +67,32 @@ module ApiResource
59
67
  end
60
68
  end
61
69
  end
70
+
71
+ # This is provided by ActiveModel::AttributeMethods, it should
72
+ # define the basic methods but we need to override all the setters
73
+ # so we do dirty tracking
74
+ attrs = []
75
+ if class_data["attributes"] && class_data["attributes"]["public"]
76
+ attrs += class_data["attributes"]["public"].collect{|v|
77
+ v.is_a?(Array) ? v.first : v
78
+ }.flatten
79
+ end
80
+ if class_data["associations"]
81
+ attrs += class_data["associations"].values.collect(&:keys).flatten
82
+ end
83
+ define_attribute_methods(attrs)
84
+
62
85
  # Swallow up any loading errors because the site may be incorrect
63
86
  rescue Exception => e
64
87
  if ApiResource.raise_missing_definition_error
65
88
  raise e
66
89
  end
67
- ApiResource.logger.warn("#{self} accessing #{self.new_element_path}")
68
- ApiResource.logger.warn("#{self}: #{e.message[0..60].gsub(/[\n\r]/, '')} ...\n")
90
+ ApiResource.logger.warn(
91
+ "#{self} accessing #{self.new_element_path}"
92
+ )
93
+ ApiResource.logger.warn(
94
+ "#{self}: #{e.message[0..60].gsub(/[\n\r]/, '')} ...\n"
95
+ )
69
96
  ApiResource.logger.debug(e.backtrace.pretty_inspect)
70
97
  return e.respond_to?(:request) ? e.request : nil
71
98
  end
@@ -446,6 +473,7 @@ module ApiResource
446
473
  attributes.symbolize_keys.each do |key, value|
447
474
  # If this attribute doesn't exist define it as a protected attribute
448
475
  self.class.define_protected_attributes(key) unless self.respond_to?(key)
476
+ #self.send("#{key}_will_change!") if self.respond_to?("#{key}_will_change!")
449
477
  self.attributes[key] =
450
478
  case value
451
479
  when Array
@@ -499,7 +527,7 @@ module ApiResource
499
527
  end
500
528
 
501
529
  def serializable_hash(options = {})
502
- options[:include_associations] = options[:include_associations] ? options[:include_associations].symbolize_array : []
530
+ options[:include_associations] = options[:include_associations] ? options[:include_associations].symbolize_array : self.changes.keys.symbolize_array.select{|k| self.association?(k)}
503
531
  options[:include_extras] = options[:include_extras] ? options[:include_extras].symbolize_array : []
504
532
  options[:except] ||= []
505
533
  ret = self.attributes.inject({}) do |accum, (key,val)|
@@ -254,7 +254,7 @@ module ApiResource
254
254
  response[:response].tap{|resp| resp.generate_response(response[:params])}
255
255
  else
256
256
  raise ApiResource::ResourceNotFound.new(
257
- MockResponse.new("", {:headers => {"Content-type" => "application/json"}, :status_code => 404}),
257
+ MockResponse.new({}, {:headers => {"Content-type" => "application/json"}, :status_code => 404}),
258
258
  :message => "\nCould not find a response recorded for \#{request.pretty_inspect}\n" +
259
259
  "Potential Responses Are:\n" +
260
260
  "\#{Array.wrap(Mocks.responses_for_path(request.path)[:responses]).collect(&:first).pretty_inspect}"
data/nohup.out ADDED
@@ -0,0 +1,63 @@
1
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/choice-0.1.4/lib/choice/parser.rb:108: warning: Hash#index is deprecated; use Hash#key
2
+ cd: 1: can't cd to /vol/www/releases/api_resource/api_resource
3
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/config.rb:25:in `to_s': Error calling git config, is a recent version of git installed? Command: "cd /vol/www/releases/api_resource/api_resource && git config cijoe.user", Error: "", Status: #<Process::Status: pid 18804 exit 2> (RuntimeError)
4
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:96:in `project_path='
5
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.2.7/lib/sinatra/base.rb:964:in `set'
6
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:86:in `start'
7
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/bin/cijoe:50:in `<top (required)>'
8
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `load'
9
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `<main>'
10
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/choice-0.1.4/lib/choice/parser.rb:108: warning: Hash#index is deprecated; use Hash#key
11
+ cd: 1: can't cd to /vol/www/releases/api_resource/api_resource
12
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/config.rb:25:in `to_s': Error calling git config, is a recent version of git installed? Command: "cd /vol/www/releases/api_resource/api_resource && git config cijoe.user", Error: "", Status: #<Process::Status: pid 19377 exit 2> (RuntimeError)
13
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:96:in `project_path='
14
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.2.7/lib/sinatra/base.rb:964:in `set'
15
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:86:in `start'
16
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/bin/cijoe:50:in `<top (required)>'
17
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `load'
18
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `<main>'
19
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/choice-0.1.4/lib/choice/parser.rb:108: warning: Hash#index is deprecated; use Hash#key
20
+ cd: 1: can't cd to /vol/www/releases/api_resource/api_resource
21
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/config.rb:25:in `to_s': Error calling git config, is a recent version of git installed? Command: "cd /vol/www/releases/api_resource/api_resource && git config cijoe.user", Error: "", Status: #<Process::Status: pid 19463 exit 2> (RuntimeError)
22
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:96:in `project_path='
23
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.2.7/lib/sinatra/base.rb:964:in `set'
24
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:86:in `start'
25
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/bin/cijoe:50:in `<top (required)>'
26
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `load'
27
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `<main>'
28
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/choice-0.1.4/lib/choice/parser.rb:108: warning: Hash#index is deprecated; use Hash#key
29
+ cd: 1: can't cd to /vol/www/releases/api_resource/api_resource
30
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/config.rb:25:in `to_s': Error calling git config, is a recent version of git installed? Command: "cd /vol/www/releases/api_resource/api_resource && git config cijoe.user", Error: "", Status: #<Process::Status: pid 19730 exit 2> (RuntimeError)
31
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:96:in `project_path='
32
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.2.7/lib/sinatra/base.rb:964:in `set'
33
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:86:in `start'
34
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/bin/cijoe:50:in `<top (required)>'
35
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `load'
36
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `<main>'
37
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/choice-0.1.4/lib/choice/parser.rb:108: warning: Hash#index is deprecated; use Hash#key
38
+ cd: 1: can't cd to /vol/www/releases/api_resource/api_resource
39
+ /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/config.rb:25:in `to_s': Error calling git config, is a recent version of git installed? Command: "cd /vol/www/releases/api_resource/api_resource && git config cijoe.user", Error: "", Status: #<Process::Status: pid 19738 exit 2> (RuntimeError)
40
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:96:in `project_path='
41
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.2.7/lib/sinatra/base.rb:964:in `set'
42
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/lib/cijoe/server.rb:86:in `start'
43
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/gems/cijoe-0.9.2/bin/cijoe:50:in `<top (required)>'
44
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `load'
45
+ from /home/bb/.rvm/gems/ruby-1.9.2-p290/bin/cijoe:19:in `<main>'
46
+ cd: 1: can't cd to /vol/www/releases/api_resource/api_resource
47
+ /usr/lib/ruby/gems/1.8/gems/cijoe-0.9.2/bin/../lib/cijoe/config.rb:25:in `to_s': Error calling git config, is a recent version of git installed? Command: "cd /vol/www/releases/api_resource/api_resource && git config cijoe.user", Error: "", Status: #<Process::Status: pid=19748,exited(2)> (RuntimeError)
48
+ from /usr/lib/ruby/gems/1.8/gems/cijoe-0.9.2/bin/../lib/cijoe/server.rb:96:in `project_path='
49
+ from /usr/lib/ruby/gems/1.8/gems/sinatra-1.2.7/lib/sinatra/base.rb:964:in `__send__'
50
+ from /usr/lib/ruby/gems/1.8/gems/sinatra-1.2.7/lib/sinatra/base.rb:964:in `set'
51
+ from /usr/lib/ruby/gems/1.8/gems/cijoe-0.9.2/bin/../lib/cijoe/server.rb:86:in `start'
52
+ from /usr/lib/ruby/gems/1.8/gems/cijoe-0.9.2/bin/cijoe:50
53
+ from /usr/bin/cijoe:19:in `load'
54
+ from /usr/bin/cijoe:19
55
+ cd: 1: can't cd to /vol/www/releases/api_resource/api_resource
56
+ /usr/lib/ruby/gems/1.8/gems/cijoe-0.9.2/bin/../lib/cijoe/config.rb:25:in `to_s': Error calling git config, is a recent version of git installed? Command: "cd /vol/www/releases/api_resource/api_resource && git config cijoe.user", Error: "", Status: #<Process::Status: pid=19909,exited(2)> (RuntimeError)
57
+ from /usr/lib/ruby/gems/1.8/gems/cijoe-0.9.2/bin/../lib/cijoe/server.rb:96:in `project_path='
58
+ from /usr/lib/ruby/gems/1.8/gems/sinatra-1.2.7/lib/sinatra/base.rb:964:in `__send__'
59
+ from /usr/lib/ruby/gems/1.8/gems/sinatra-1.2.7/lib/sinatra/base.rb:964:in `set'
60
+ from /usr/lib/ruby/gems/1.8/gems/cijoe-0.9.2/bin/../lib/cijoe/server.rb:86:in `start'
61
+ from /usr/lib/ruby/gems/1.8/gems/cijoe-0.9.2/bin/cijoe:50
62
+ from /usr/bin/cijoe:19:in `load'
63
+ from /usr/bin/cijoe:19
@@ -201,7 +201,7 @@ describe "Base" do
201
201
  hash["test_resource"].should_not be_nil
202
202
  end
203
203
 
204
- it "should not include associations by default" do
204
+ it "should not include associations by default if they have not changed" do
205
205
  tst = TestResource.new({:attr1 => "attr1", :attr2 => "attr2", :has_many_objects => []})
206
206
  hash = JSON.parse(tst.to_json)
207
207
  hash["has_many_objects"].should be_nil
@@ -213,6 +213,13 @@ describe "Base" do
213
213
  hash["has_many_objects"].should_not be_nil
214
214
  end
215
215
 
216
+ it "should include associations by default if they have changed" do
217
+ tst = TestResource.new({:attr1 => "attr1", :attr2 => "attr2", :has_many_objects => []})
218
+ tst.has_many_objects = [{:name => "test"}]
219
+ hash = JSON.parse(tst.to_json)
220
+ hash["has_many_objects"].should_not be_nil
221
+ end
222
+
216
223
  it "should not include unknown attributes unless they are passed in via the include_extras array" do
217
224
  tst = TestResource.new({:attr1 => "attr1", :attr2 => "attr2", :attr3 => "attr3"})
218
225
  hash = JSON.parse(tst.to_json)
@@ -8,7 +8,7 @@ describe Mocks do
8
8
  # we set up the mocks in spec helper, so we can just assert this
9
9
  it "should hijack the connection" do
10
10
  ApiResource::Mocks::Interface.any_instance.expects(:get).once.returns(
11
- ApiResource::Mocks::MockResponse.new("", {:headers => {"Content-type" => "application/json"}, :status_code => 200})
11
+ ApiResource::Mocks::MockResponse.new({}, {:headers => {"Content-type" => "application/json"}, :status_code => 200})
12
12
  )
13
13
  TestResource.reload_class_attributes
14
14
  end
@@ -12,10 +12,6 @@ HashDealer.define(:new_test_object) do
12
12
  :belongs_to => {:belongs_to_object => {}, :custom_name => {:class_name => "BelongsToObject"}},
13
13
  :has_one => {:has_one_object => {}},
14
14
  })
15
- # Think of a use case for this
16
- options({
17
-
18
- })
19
15
  end
20
16
 
21
17
  HashDealer.define(:test_resource) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-20 00:00:00.000000000Z
12
+ date: 2012-03-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &2159188660 !ruby/object:Gem::Requirement
16
+ requirement: &2165270300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.9
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2159188660
24
+ version_requirements: *2165270300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hash_dealer
27
- requirement: &2159188140 !ruby/object:Gem::Requirement
27
+ requirement: &2165256520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2159188140
35
+ version_requirements: *2165256520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rest-client
38
- requirement: &2159187640 !ruby/object:Gem::Requirement
38
+ requirement: &2165233680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2159187640
46
+ version_requirements: *2165233680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: log4r
49
- requirement: &2159187100 !ruby/object:Gem::Requirement
49
+ requirement: &2165231660 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2159187100
57
+ version_requirements: *2165231660
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: differ
60
- requirement: &2159186620 !ruby/object:Gem::Requirement
60
+ requirement: &2165230180 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2159186620
68
+ version_requirements: *2165230180
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: colorize
71
- requirement: &2159186140 !ruby/object:Gem::Requirement
71
+ requirement: &2165229340 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *2159186140
79
+ version_requirements: *2165229340
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: json
82
- requirement: &2159185660 !ruby/object:Gem::Requirement
82
+ requirement: &2165228280 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *2159185660
90
+ version_requirements: *2165228280
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rspec
93
- requirement: &2159185180 !ruby/object:Gem::Requirement
93
+ requirement: &2165227400 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2159185180
101
+ version_requirements: *2165227400
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: ruby-debug19
104
- requirement: &2159177840 !ruby/object:Gem::Requirement
104
+ requirement: &2165226420 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *2159177840
112
+ version_requirements: *2165226420
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: growl
115
- requirement: &2159177160 !ruby/object:Gem::Requirement
115
+ requirement: &2165225600 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *2159177160
123
+ version_requirements: *2165225600
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rspec-rails
126
- requirement: &2159176520 !ruby/object:Gem::Requirement
126
+ requirement: &2165225020 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *2159176520
134
+ version_requirements: *2165225020
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: factory_girl
137
- requirement: &2159175880 !ruby/object:Gem::Requirement
137
+ requirement: &2165224220 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *2159175880
145
+ version_requirements: *2165224220
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: simplecov
148
- requirement: &2159175220 !ruby/object:Gem::Requirement
148
+ requirement: &2165223520 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ! '>='
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: '0'
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *2159175220
156
+ version_requirements: *2165223520
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: faker
159
- requirement: &2159174520 !ruby/object:Gem::Requirement
159
+ requirement: &2165222520 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ! '>='
@@ -164,10 +164,10 @@ dependencies:
164
164
  version: '0'
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *2159174520
167
+ version_requirements: *2165222520
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: guard
170
- requirement: &2159173900 !ruby/object:Gem::Requirement
170
+ requirement: &2165220880 !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
173
173
  - - ! '>='
@@ -175,10 +175,10 @@ dependencies:
175
175
  version: '0'
176
176
  type: :development
177
177
  prerelease: false
178
- version_requirements: *2159173900
178
+ version_requirements: *2165220880
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: guard-rspec
181
- requirement: &2159173240 !ruby/object:Gem::Requirement
181
+ requirement: &2165220040 !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
184
184
  - - ! '>='
@@ -186,10 +186,10 @@ dependencies:
186
186
  version: '0'
187
187
  type: :development
188
188
  prerelease: false
189
- version_requirements: *2159173240
189
+ version_requirements: *2165220040
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: mocha
192
- requirement: &2159172660 !ruby/object:Gem::Requirement
192
+ requirement: &2165218740 !ruby/object:Gem::Requirement
193
193
  none: false
194
194
  requirements:
195
195
  - - ! '>='
@@ -197,21 +197,21 @@ dependencies:
197
197
  version: '0'
198
198
  type: :development
199
199
  prerelease: false
200
- version_requirements: *2159172660
200
+ version_requirements: *2165218740
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: bundler
203
- requirement: &2159172040 !ruby/object:Gem::Requirement
203
+ requirement: &2165217560 !ruby/object:Gem::Requirement
204
204
  none: false
205
205
  requirements:
206
- - - ~>
206
+ - - ! '>='
207
207
  - !ruby/object:Gem::Version
208
- version: 1.0.0
208
+ version: '0'
209
209
  type: :development
210
210
  prerelease: false
211
- version_requirements: *2159172040
211
+ version_requirements: *2165217560
212
212
  - !ruby/object:Gem::Dependency
213
213
  name: jeweler
214
- requirement: &2159171560 !ruby/object:Gem::Requirement
214
+ requirement: &2165216380 !ruby/object:Gem::Requirement
215
215
  none: false
216
216
  requirements:
217
217
  - - ~>
@@ -219,10 +219,10 @@ dependencies:
219
219
  version: 1.6.4
220
220
  type: :development
221
221
  prerelease: false
222
- version_requirements: *2159171560
222
+ version_requirements: *2165216380
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: activerecord
225
- requirement: &2159171080 !ruby/object:Gem::Requirement
225
+ requirement: &2165215240 !ruby/object:Gem::Requirement
226
226
  none: false
227
227
  requirements:
228
228
  - - =
@@ -230,10 +230,10 @@ dependencies:
230
230
  version: 3.0.9
231
231
  type: :development
232
232
  prerelease: false
233
- version_requirements: *2159171080
233
+ version_requirements: *2165215240
234
234
  - !ruby/object:Gem::Dependency
235
235
  name: sqlite3
236
- requirement: &2159170600 !ruby/object:Gem::Requirement
236
+ requirement: &2165214200 !ruby/object:Gem::Requirement
237
237
  none: false
238
238
  requirements:
239
239
  - - ! '>='
@@ -241,7 +241,7 @@ dependencies:
241
241
  version: '0'
242
242
  type: :development
243
243
  prerelease: false
244
- version_requirements: *2159170600
244
+ version_requirements: *2165214200
245
245
  description: A replacement for ActiveResource for RESTful APIs that handles associated
246
246
  object and multiple data sources
247
247
  email: ejl6266@gmail.com
@@ -293,6 +293,7 @@ files:
293
293
  - lib/api_resource/observing.rb
294
294
  - lib/api_resource/railtie.rb
295
295
  - lib/api_resource/scopes.rb
296
+ - nohup.out
296
297
  - spec/lib/associations_spec.rb
297
298
  - spec/lib/attributes_spec.rb
298
299
  - spec/lib/base_spec.rb
@@ -324,7 +325,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
324
325
  version: '0'
325
326
  segments:
326
327
  - 0
327
- hash: 1395135479107090038
328
+ hash: -2414595039217114624
328
329
  required_rubygems_version: !ruby/object:Gem::Requirement
329
330
  none: false
330
331
  requirements:
@@ -333,7 +334,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
333
334
  version: '0'
334
335
  requirements: []
335
336
  rubyforge_project:
336
- rubygems_version: 1.8.8
337
+ rubygems_version: 1.8.11
337
338
  signing_key:
338
339
  specification_version: 3
339
340
  summary: A replacement for ActiveResource for RESTful APIs that handles associated