api_resource 0.3.4 → 0.3.5

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/.rspec CHANGED
@@ -2,3 +2,4 @@
2
2
  --format nested
3
3
  --backtrace
4
4
  --fail-fast
5
+ -X
data/Gemfile CHANGED
@@ -26,8 +26,9 @@ group :development do
26
26
  gem 'factory_girl'
27
27
  gem 'simplecov'
28
28
  gem 'faker'
29
- gem 'guard'
29
+ gem 'guard-bundler'
30
30
  gem 'guard-rspec'
31
+ gem 'guard-spork'
31
32
  gem 'mocha'
32
33
  gem "bundler"
33
34
  gem "jeweler", "~> 1.6.4"
data/Gemfile.lock CHANGED
@@ -47,8 +47,14 @@ GEM
47
47
  guard (1.0.1)
48
48
  ffi (>= 0.5.0)
49
49
  thor (~> 0.14.6)
50
+ guard-bundler (0.1.3)
51
+ bundler (>= 1.0.0)
52
+ guard (>= 0.2.2)
50
53
  guard-rspec (0.6.0)
51
54
  guard (>= 0.10.0)
55
+ guard-spork (1.0.1)
56
+ guard (>= 1.0.0)
57
+ spork (>= 0.8.4)
52
58
  hash_dealer (1.4.7)
53
59
  activesupport
54
60
  colorize
@@ -139,6 +145,7 @@ GEM
139
145
  simplecov-html (~> 0.5.3)
140
146
  simplecov-html (0.5.3)
141
147
  slop (2.4.4)
148
+ spork (0.9.2)
142
149
  sprockets (2.1.3)
143
150
  hike (~> 1.2)
144
151
  rack (~> 1.0)
@@ -163,8 +170,9 @@ DEPENDENCIES
163
170
  factory_girl
164
171
  faker
165
172
  growl
166
- guard
173
+ guard-bundler
167
174
  guard-rspec
175
+ guard-spork
168
176
  hash_dealer
169
177
  jeweler (~> 1.6.4)
170
178
  json
data/Guardfile CHANGED
@@ -1,6 +1,12 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
+ guard 'bundler' do
5
+ watch('Gemfile')
6
+ # Uncomment next line if Gemfile contain `gemspec' command
7
+ # watch(/^.+\.gemspec/)
8
+ end
9
+
4
10
  guard 'rspec', :version => 2, :cli => "--color --format nested" do
5
11
  watch(%r{^spec/.+_spec\.rb$})
6
12
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
@@ -18,5 +24,4 @@ guard 'rspec', :version => 2, :cli => "--color --format nested" do
18
24
  watch('app/controllers/application_controller.rb') { "spec/controllers" }
19
25
  # Capybara request specs
20
26
  watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
21
- end
22
-
27
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.4
1
+ 0.3.5
data/api_resource.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "api_resource"
8
- s.version = "0.3.4"
8
+ s.version = "0.3.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ethan Langevin"]
12
- s.date = "2012-07-02"
12
+ s.date = "2012-07-07"
13
13
  s.description = "A replacement for ActiveResource for RESTful APIs that handles associated object and multiple data sources"
14
14
  s.email = "ejl6266@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -83,7 +83,7 @@ Gem::Specification.new do |s|
83
83
  s.homepage = "http://github.com/ejlangev/resource"
84
84
  s.licenses = ["MIT"]
85
85
  s.require_paths = ["lib"]
86
- s.rubygems_version = "1.8.10"
86
+ s.rubygems_version = "1.8.11"
87
87
  s.summary = "A replacement for ActiveResource for RESTful APIs that handles associated object and multiple data sources"
88
88
 
89
89
  if s.respond_to? :specification_version then
@@ -107,8 +107,9 @@ Gem::Specification.new do |s|
107
107
  s.add_development_dependency(%q<factory_girl>, [">= 0"])
108
108
  s.add_development_dependency(%q<simplecov>, [">= 0"])
109
109
  s.add_development_dependency(%q<faker>, [">= 0"])
110
- s.add_development_dependency(%q<guard>, [">= 0"])
110
+ s.add_development_dependency(%q<guard-bundler>, [">= 0"])
111
111
  s.add_development_dependency(%q<guard-rspec>, [">= 0"])
112
+ s.add_development_dependency(%q<guard-spork>, [">= 0"])
112
113
  s.add_development_dependency(%q<mocha>, [">= 0"])
113
114
  s.add_development_dependency(%q<bundler>, [">= 0"])
114
115
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -132,8 +133,9 @@ Gem::Specification.new do |s|
132
133
  s.add_dependency(%q<factory_girl>, [">= 0"])
133
134
  s.add_dependency(%q<simplecov>, [">= 0"])
134
135
  s.add_dependency(%q<faker>, [">= 0"])
135
- s.add_dependency(%q<guard>, [">= 0"])
136
+ s.add_dependency(%q<guard-bundler>, [">= 0"])
136
137
  s.add_dependency(%q<guard-rspec>, [">= 0"])
138
+ s.add_dependency(%q<guard-spork>, [">= 0"])
137
139
  s.add_dependency(%q<mocha>, [">= 0"])
138
140
  s.add_dependency(%q<bundler>, [">= 0"])
139
141
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -158,8 +160,9 @@ Gem::Specification.new do |s|
158
160
  s.add_dependency(%q<factory_girl>, [">= 0"])
159
161
  s.add_dependency(%q<simplecov>, [">= 0"])
160
162
  s.add_dependency(%q<faker>, [">= 0"])
161
- s.add_dependency(%q<guard>, [">= 0"])
163
+ s.add_dependency(%q<guard-bundler>, [">= 0"])
162
164
  s.add_dependency(%q<guard-rspec>, [">= 0"])
165
+ s.add_dependency(%q<guard-spork>, [">= 0"])
163
166
  s.add_dependency(%q<mocha>, [">= 0"])
164
167
  s.add_dependency(%q<bundler>, [">= 0"])
165
168
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -14,11 +14,11 @@ module ApiResource
14
14
  class_attribute :include_root_in_json
15
15
  self.include_root_in_json = true
16
16
 
17
- class_attribute :include_blank_attributes_on_create
18
- self.include_blank_attributes_on_create = false
17
+ class_attribute :include_nil_attributes_on_create
18
+ self.include_nil_attributes_on_create = false
19
19
 
20
20
  class_attribute :include_all_attributes_on_update
21
- self.include_blank_attributes_on_create = false
21
+ self.include_nil_attributes_on_create = false
22
22
 
23
23
  class_attribute :format
24
24
  self.format = ApiResource::Formats::JsonFormat
@@ -544,7 +544,7 @@ module ApiResource
544
544
 
545
545
  def serializable_hash(options = {})
546
546
  action = options[:action]
547
- include_blank_attributes = options[:include_blank_attributes]
547
+ include_nil_attributes = options[:include_nil_attributes]
548
548
  options[:include_associations] = options[:include_associations] ? options[:include_associations].symbolize_array : self.changes.keys.symbolize_array.select{|k| self.association?(k)}
549
549
  options[:include_extras] = options[:include_extras] ? options[:include_extras].symbolize_array : []
550
550
  options[:except] ||= []
@@ -552,14 +552,14 @@ module ApiResource
552
552
  # If this is an association and it's in include_associations then include it
553
553
  if options[:include_extras].include?(key.to_sym)
554
554
  accum.merge(key => val)
555
- elsif options[:except].include?(key.to_sym) || (!include_blank_attributes && val.blank?)
555
+ elsif options[:except].include?(key.to_sym) || (!include_nil_attributes && val.nil? && self.changes[key].blank?)
556
556
  accum
557
557
  else
558
558
  !self.attribute?(key) || self.protected_attribute?(key) ? accum : accum.merge(key => val)
559
559
  end
560
560
  end
561
561
  options[:include_associations].each do |assoc|
562
- ret[assoc] = self.send(assoc).serializable_hash({:include_id => true, :include_blank_attributes => include_blank_attributes, :action => action}) if self.association?(assoc)
562
+ ret[assoc] = self.send(assoc).serializable_hash({:include_id => true, :include_nil_attributes => include_nil_attributes, :action => action}) if self.association?(assoc)
563
563
  end
564
564
  # include id - this is for nested updates
565
565
  ret[:id] = self.id if options[:include_id] && !self.new?
@@ -579,6 +579,15 @@ module ApiResource
579
579
  self.class.element_path(id, prefix_options, query_options)
580
580
  end
581
581
 
582
+ # list of all attributes that are not nil
583
+ def nil_attributes
584
+ self.attributes.select{|k,v|
585
+ # if our value is actually nil or if we are an association
586
+ # or array and we are blank
587
+ v.nil? || ((self.association?(k) || v.is_a?(Array)) && v.blank?)
588
+ }
589
+ end
590
+
582
591
  def new_element_path(prefix_options = {})
583
592
  self.class.new_element_path(prefix_options)
584
593
  end
@@ -597,9 +606,10 @@ module ApiResource
597
606
  def setup_create_call(*args)
598
607
  opts = args.extract_options!
599
608
  # When we create we should not include any blank attributes unless they are associations
600
- except = self.class.include_blank_attributes_on_create ? {} : self.attributes.select{|k,v| v.blank?}
609
+ except = self.class.include_nil_attributes_on_create ?
610
+ {} : self.nil_attributes
601
611
  opts[:except] = opts[:except] ? opts[:except].concat(except.keys).uniq.symbolize_array : except.keys.symbolize_array
602
- opts[:include_blank_attributes] = self.class.include_blank_attributes_on_create
612
+ opts[:include_nil_attributes] = self.class.include_nil_attributes_on_create
603
613
  opts[:include_associations] = opts[:include_associations] ? opts[:include_associations].concat(args) : []
604
614
  opts[:include_extras] ||= []
605
615
  opts[:action] = "create"
@@ -621,7 +631,7 @@ module ApiResource
621
631
  except = self.class.attribute_names - self.changed.symbolize_array
622
632
  changed_associations = self.changed.symbolize_array.select{|item| self.association?(item)}
623
633
  opts[:except] = opts[:except] ? opts[:except].concat(except).uniq.symbolize_array : except.symbolize_array
624
- opts[:include_blank_attributes] = self.include_all_attributes_on_update
634
+ opts[:include_nil_attributes] = self.include_all_attributes_on_update
625
635
  opts[:include_associations] = opts[:include_associations] ? opts[:include_associations].concat(args).concat(changed_associations).uniq : changed_associations.concat(args)
626
636
  opts[:include_extras] ||= []
627
637
  opts[:action] = "update"
@@ -311,6 +311,17 @@ describe "Base" do
311
311
  tr.save
312
312
  end
313
313
 
314
+ it "should include false attributes when creating by default" do
315
+ ApiResource::Connection.any_instance.expects(:post).with(
316
+ "/test_resources.json",
317
+ "{\"test_resource\":{\"name\":\"Ethan\",\"is_active\":false}}",
318
+ TestResource.headers
319
+ )
320
+
321
+ tr = TestResource.build(:name => "Ethan", :is_active => false)
322
+ tr.save
323
+ end
324
+
314
325
 
315
326
  it "should not include nil attributes for associated objects when creating by default" do
316
327
  ApiResource::Connection.any_instance.expects(:post).with(
@@ -340,16 +351,16 @@ describe "Base" do
340
351
  it "should include nil attributes when creating if include_nil_attributes_on_create is true" do
341
352
  ApiResource::Connection.any_instance.expects(:post).with(
342
353
  "/test_resources.json",
343
- "{\"test_resource\":{\"name\":\"Ethan\",\"age\":null,\"bday\":null,\"roles\":[]}}",
354
+ "{\"test_resource\":{\"name\":\"Ethan\",\"age\":null,\"is_active\":null,\"bday\":null,\"roles\":[]}}",
344
355
  TestResource.headers
345
356
  )
346
357
 
347
- TestResource.include_blank_attributes_on_create = true
358
+ TestResource.include_nil_attributes_on_create = true
348
359
  tr = TestResource.build(:name => "Ethan")
349
360
  tr.save
350
361
 
351
362
  #hash['test_resource'].key?('age').should be_true
352
- TestResource.include_blank_attributes_on_create = false
363
+ TestResource.include_nil_attributes_on_create = false
353
364
  end
354
365
  end
355
366
  end
@@ -425,7 +436,7 @@ describe "Base" do
425
436
 
426
437
  ApiResource::Connection.any_instance.expects(:put).with(
427
438
  "/test_resources/1.json",
428
- "{\"test_resource\":{\"has_one_object\":{}}}",
439
+ "{\"test_resource\":{\"has_one_object\":{\"size\":null}}}",
429
440
  TestResource.headers
430
441
  ).in_sequence(correct_order)
431
442
 
@@ -464,7 +475,7 @@ describe "Base" do
464
475
  it "should include all attributes if include_all_attributes_on_update is true" do
465
476
  ApiResource::Connection.any_instance.expects(:put).with(
466
477
  "/test_resources/1.json",
467
- "{\"test_resource\":{\"name\":\"Ethan\",\"age\":null,\"bday\":null,\"roles\":[]}}",
478
+ "{\"test_resource\":{\"name\":\"Ethan\",\"age\":null,\"is_active\":null,\"bday\":null,\"roles\":[]}}",
468
479
  TestResource.headers
469
480
  )
470
481
 
@@ -485,6 +496,35 @@ describe "Base" do
485
496
  tr.update_attributes(:name => "Dan")
486
497
  end
487
498
 
499
+
500
+ it "should include nil attributes when updating if they have
501
+ changed by default" do
502
+
503
+ ApiResource::Connection.any_instance.expects(:put).with(
504
+ "/test_resources/1.json",
505
+ "{\"test_resource\":{\"is_active\":null}}",
506
+ TestResource.headers
507
+ )
508
+
509
+ tr = TestResource.new(
510
+ :id => "1", :name => "Ethan", :is_active => false
511
+ )
512
+ tr.update_attributes(:is_active => nil)
513
+ end
514
+
515
+ it "should include attributes that have changed to false by default" do
516
+ ApiResource::Connection.any_instance.expects(:put).with(
517
+ "/test_resources/1.json",
518
+ "{\"test_resource\":{\"is_active\":false}}",
519
+ TestResource.headers
520
+ )
521
+
522
+ tr = TestResource.new(
523
+ :id => "1", :name => "Ethan", :is_active => true
524
+ )
525
+ tr.update_attributes(:is_active => false)
526
+
527
+ end
488
528
 
489
529
  end
490
530
 
data/spec/spec_helper.rb CHANGED
@@ -1,36 +1,82 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
3
- require 'bundler'
4
- require 'api_resource'
5
- require 'simplecov'
1
+ require 'rubygems'
2
+ require 'spork'
3
+ #uncomment the following line to use spork with the debugger
4
+ #require 'spork/ext/ruby-debug'
6
5
 
6
+ Spork.prefork do
7
+ # Loading more in this block will cause your tests to run faster. However,
8
+ # if you change any configuration or code from libraries loaded here, you'll
9
+ # need to restart spork for it take effect.
7
10
 
8
- SimpleCov.start do
9
- add_filter "/spec/"
10
- end
11
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
12
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
13
+ require 'bundler'
14
+ require 'api_resource'
15
+ require 'simplecov'
11
16
 
12
- SimpleCov.at_exit do
13
- SimpleCov.result.format!
14
- end
15
17
 
16
- # Requires supporting files with custom matchers and macros, etc,
17
- # in ./support/ and its subdirectories.
18
- Bundler.require(:default, :development)
19
- Debugger.start
18
+ SimpleCov.start do
19
+ add_filter "/spec/"
20
+ end
21
+
22
+ SimpleCov.at_exit do
23
+ SimpleCov.result.format!
24
+ end
25
+
26
+ # Requires supporting files with custom matchers and macros, etc,
27
+ # in ./support/ and its subdirectories.
28
+ Bundler.require(:default, :development)
29
+ Debugger.start
30
+
31
+ # Requires supporting files with custom matchers and macros, etc,
32
+ # in ./support/ and its subdirectories.
33
+ #ApiResource.load_mocks_and_factories
34
+ ApiResource.site = 'http://localhost:3000'
35
+ ApiResource.format = :json
36
+ ApiResource.load_mocks_and_factories
20
37
 
21
- # Requires supporting files with custom matchers and macros, etc,
22
- # in ./support/ and its subdirectories.
23
- #ApiResource.load_mocks_and_factories
24
- ApiResource.site = 'http://localhost:3000'
25
- ApiResource.format = :json
26
- ApiResource.load_mocks_and_factories
38
+ ApiResource.logger.level = Log4r::INFO
27
39
 
28
- ApiResource.logger.level = Log4r::INFO
40
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
29
41
 
30
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
31
42
 
32
43
 
44
+ RSpec.configure do |config|
45
+ config.mock_with :mocha
46
+ end
33
47
 
34
- RSpec.configure do |config|
35
- config.mock_with :mocha
36
48
  end
49
+
50
+ Spork.each_run do
51
+ # This code will be run each time you run your specs.
52
+
53
+ end
54
+
55
+ # --- Instructions ---
56
+ # Sort the contents of this file into a Spork.prefork and a Spork.each_run
57
+ # block.
58
+ #
59
+ # The Spork.prefork block is run only once when the spork server is started.
60
+ # You typically want to place most of your (slow) initializer code in here, in
61
+ # particular, require'ing any 3rd-party gems that you don't normally modify
62
+ # during development.
63
+ #
64
+ # The Spork.each_run block is run each time you run your specs. In case you
65
+ # need to load files that tend to change during development, require them here.
66
+ # With Rails, your application modules are loaded automatically, so sometimes
67
+ # this block can remain empty.
68
+ #
69
+ # Note: You can modify files loaded *from* the Spork.each_run block without
70
+ # restarting the spork server. However, this file itself will not be reloaded,
71
+ # so if you change any of the code inside the each_run block, you still need to
72
+ # restart the server. In general, if you have non-trivial code in this file,
73
+ # it's advisable to move it into a separate file so you can easily edit it
74
+ # without restarting spork. (For example, with RSpec, you could move
75
+ # non-trivial code into a file spec/support/my_helper.rb, making sure that the
76
+ # spec/support/* files are require'd from inside the each_run block.)
77
+ #
78
+ # Any code that is left outside the two blocks will be run during preforking
79
+ # *and* during each_run -- that's probably not what you want.
80
+ #
81
+ # These instructions should self-destruct in 10 seconds. If they don't, feel
82
+ # free to delete them.
@@ -1,7 +1,7 @@
1
1
  HashDealer.define(:new_test_object) do
2
2
  attributes({
3
3
  :protected => [:id],
4
- :public => [:name, :age, [:bday, :date], [:roles, :array]]
4
+ :public => [:name, :age, :is_active, [:bday, :date], [:roles, :array]]
5
5
  })
6
6
  scopes({
7
7
  :active => {:active => true},
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.3.4
4
+ version: 0.3.5
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-07-02 00:00:00.000000000 Z
12
+ date: 2012-07-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70173231121040 !ruby/object:Gem::Requirement
16
+ requirement: &2160638840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70173231121040
24
+ version_requirements: *2160638840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hash_dealer
27
- requirement: &70173231120060 !ruby/object:Gem::Requirement
27
+ requirement: &2160649640 !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: *70173231120060
35
+ version_requirements: *2160649640
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rest-client
38
- requirement: &70173231118740 !ruby/object:Gem::Requirement
38
+ requirement: &2160661900 !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: *70173231118740
46
+ version_requirements: *2160661900
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: log4r
49
- requirement: &70173231117920 !ruby/object:Gem::Requirement
49
+ requirement: &2160671720 !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: *70173231117920
57
+ version_requirements: *2160671720
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: differ
60
- requirement: &70173231116760 !ruby/object:Gem::Requirement
60
+ requirement: &2160679940 !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: *70173231116760
68
+ version_requirements: *2160679940
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: colorize
71
- requirement: &70173231115920 !ruby/object:Gem::Requirement
71
+ requirement: &2160773040 !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: *70173231115920
79
+ version_requirements: *2160773040
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: json
82
- requirement: &70173231114900 !ruby/object:Gem::Requirement
82
+ requirement: &2161308060 !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: *70173231114900
90
+ version_requirements: *2161308060
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: pry
93
- requirement: &70173231113720 !ruby/object:Gem::Requirement
93
+ requirement: &2168857960 !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: *70173231113720
101
+ version_requirements: *2168857960
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: pry-doc
104
- requirement: &70173231112620 !ruby/object:Gem::Requirement
104
+ requirement: &2169018780 !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: *70173231112620
112
+ version_requirements: *2169018780
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: pry-nav
115
- requirement: &70173231111600 !ruby/object:Gem::Requirement
115
+ requirement: &2169045040 !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: *70173231111600
123
+ version_requirements: *2169045040
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rspec
126
- requirement: &70173231110520 !ruby/object:Gem::Requirement
126
+ requirement: &2169382600 !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: *70173231110520
134
+ version_requirements: *2169382600
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: ruby-debug19
137
- requirement: &70173231109640 !ruby/object:Gem::Requirement
137
+ requirement: &2169382120 !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: *70173231109640
145
+ version_requirements: *2169382120
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: growl
148
- requirement: &70173231108700 !ruby/object:Gem::Requirement
148
+ requirement: &2169381640 !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: *70173231108700
156
+ version_requirements: *2169381640
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: rspec-rails
159
- requirement: &70173231107700 !ruby/object:Gem::Requirement
159
+ requirement: &2169381160 !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: *70173231107700
167
+ version_requirements: *2169381160
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: factory_girl
170
- requirement: &70173231106960 !ruby/object:Gem::Requirement
170
+ requirement: &2169380680 !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: *70173231106960
178
+ version_requirements: *2169380680
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: simplecov
181
- requirement: &70173231105660 !ruby/object:Gem::Requirement
181
+ requirement: &2169380200 !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: *70173231105660
189
+ version_requirements: *2169380200
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: faker
192
- requirement: &70173231104920 !ruby/object:Gem::Requirement
192
+ requirement: &2169379720 !ruby/object:Gem::Requirement
193
193
  none: false
194
194
  requirements:
195
195
  - - ! '>='
@@ -197,10 +197,10 @@ dependencies:
197
197
  version: '0'
198
198
  type: :development
199
199
  prerelease: false
200
- version_requirements: *70173231104920
200
+ version_requirements: *2169379720
201
201
  - !ruby/object:Gem::Dependency
202
- name: guard
203
- requirement: &70173231104280 !ruby/object:Gem::Requirement
202
+ name: guard-bundler
203
+ requirement: &2169379240 !ruby/object:Gem::Requirement
204
204
  none: false
205
205
  requirements:
206
206
  - - ! '>='
@@ -208,10 +208,10 @@ dependencies:
208
208
  version: '0'
209
209
  type: :development
210
210
  prerelease: false
211
- version_requirements: *70173231104280
211
+ version_requirements: *2169379240
212
212
  - !ruby/object:Gem::Dependency
213
213
  name: guard-rspec
214
- requirement: &70173231103600 !ruby/object:Gem::Requirement
214
+ requirement: &2169378760 !ruby/object:Gem::Requirement
215
215
  none: false
216
216
  requirements:
217
217
  - - ! '>='
@@ -219,10 +219,21 @@ dependencies:
219
219
  version: '0'
220
220
  type: :development
221
221
  prerelease: false
222
- version_requirements: *70173231103600
222
+ version_requirements: *2169378760
223
+ - !ruby/object:Gem::Dependency
224
+ name: guard-spork
225
+ requirement: &2169378280 !ruby/object:Gem::Requirement
226
+ none: false
227
+ requirements:
228
+ - - ! '>='
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: *2169378280
223
234
  - !ruby/object:Gem::Dependency
224
235
  name: mocha
225
- requirement: &70173231102860 !ruby/object:Gem::Requirement
236
+ requirement: &2169377800 !ruby/object:Gem::Requirement
226
237
  none: false
227
238
  requirements:
228
239
  - - ! '>='
@@ -230,10 +241,10 @@ dependencies:
230
241
  version: '0'
231
242
  type: :development
232
243
  prerelease: false
233
- version_requirements: *70173231102860
244
+ version_requirements: *2169377800
234
245
  - !ruby/object:Gem::Dependency
235
246
  name: bundler
236
- requirement: &70173231100620 !ruby/object:Gem::Requirement
247
+ requirement: &2169377320 !ruby/object:Gem::Requirement
237
248
  none: false
238
249
  requirements:
239
250
  - - ! '>='
@@ -241,10 +252,10 @@ dependencies:
241
252
  version: '0'
242
253
  type: :development
243
254
  prerelease: false
244
- version_requirements: *70173231100620
255
+ version_requirements: *2169377320
245
256
  - !ruby/object:Gem::Dependency
246
257
  name: jeweler
247
- requirement: &70173231099920 !ruby/object:Gem::Requirement
258
+ requirement: &2169376840 !ruby/object:Gem::Requirement
248
259
  none: false
249
260
  requirements:
250
261
  - - ~>
@@ -252,10 +263,10 @@ dependencies:
252
263
  version: 1.6.4
253
264
  type: :development
254
265
  prerelease: false
255
- version_requirements: *70173231099920
266
+ version_requirements: *2169376840
256
267
  - !ruby/object:Gem::Dependency
257
268
  name: activerecord
258
- requirement: &70173231099300 !ruby/object:Gem::Requirement
269
+ requirement: &2169372220 !ruby/object:Gem::Requirement
259
270
  none: false
260
271
  requirements:
261
272
  - - ~>
@@ -263,10 +274,10 @@ dependencies:
263
274
  version: '3'
264
275
  type: :development
265
276
  prerelease: false
266
- version_requirements: *70173231099300
277
+ version_requirements: *2169372220
267
278
  - !ruby/object:Gem::Dependency
268
279
  name: sqlite3
269
- requirement: &70173231098500 !ruby/object:Gem::Requirement
280
+ requirement: &2169368180 !ruby/object:Gem::Requirement
270
281
  none: false
271
282
  requirements:
272
283
  - - ! '>='
@@ -274,7 +285,7 @@ dependencies:
274
285
  version: '0'
275
286
  type: :development
276
287
  prerelease: false
277
- version_requirements: *70173231098500
288
+ version_requirements: *2169368180
278
289
  description: A replacement for ActiveResource for RESTful APIs that handles associated
279
290
  object and multiple data sources
280
291
  email: ejl6266@gmail.com
@@ -361,7 +372,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
361
372
  version: '0'
362
373
  segments:
363
374
  - 0
364
- hash: -1534545171276670473
375
+ hash: -736365968347087456
365
376
  required_rubygems_version: !ruby/object:Gem::Requirement
366
377
  none: false
367
378
  requirements:
@@ -370,7 +381,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
370
381
  version: '0'
371
382
  requirements: []
372
383
  rubyforge_project:
373
- rubygems_version: 1.8.10
384
+ rubygems_version: 1.8.11
374
385
  signing_key:
375
386
  specification_version: 3
376
387
  summary: A replacement for ActiveResource for RESTful APIs that handles associated