served 0.1.5 → 0.1.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 29a2b56443a1a80b781afd1a6748db0d0c36164b
4
- data.tar.gz: 9d12321a5ed7b46bc639dcf8791e2f236beb26a3
3
+ metadata.gz: 18d0b5a5d6bc54eed0cc6d6ff0485342c9487863
4
+ data.tar.gz: e4cd8e832643622713b0aa8d5343ebd451609b40
5
5
  SHA512:
6
- metadata.gz: e51558cc1fe9f0b87b7c0141f2a107c3e823f3a1838d8177518ad6433232f5967781c16ba5c9048a0f160ad07a9167b4817f1a79d0aabd4fbfd15581762cc910
7
- data.tar.gz: 748a36574dfdcbb27f39a3cb948e2fd237562945254367265b1509032cd8690f4d7f4d8e8eff3ac9d6023b8eac7f0b5d76578b26b59e61f5b9db0c90561c3978
6
+ metadata.gz: 42193c7f1e6d2356244fd48894a9a254680cbeb3ffdd0a587346a223d013619dd85a9a40dcde6bac091e881fd004ea7ad74d5d33a44d0a6dcb7a4c96ac1d750b
7
+ data.tar.gz: 338753924c4f965a38d45db21b225439d70dac94092442e36ed66b05514a3518fe087c3fa95919b911c2847deb0a637c555cb1f16d134a8038d848bcf4b0ad52
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # Served
2
- [![Build Status](https://travis-ci.org/fugufish/served.svg)](https://travis-ci.org/fugufish/served)
2
+ [![Build Status](https://travis-ci.org/optoro/served.svg)](https://travis-ci.org/optoro/served)
3
3
 
4
4
  Served is a gem in the vein of [ActiveResource](https://github.com/rails/activeresource) designed to facilitate
5
5
  communication between distributed Rails services.
@@ -10,18 +10,25 @@ Add the following to your Gemfile:
10
10
 
11
11
  ```gem 'served'```
12
12
 
13
+
13
14
  # Usage
15
+ A service model can be created by declaring a class inheriting from ```Service::Resource::Base```.
14
16
 
15
17
  ```ruby
16
18
  class SomeService::SomeResource < Served::Resource::Base
17
19
 
18
20
  attribute :name
19
21
  attribute :date
20
- attribute :phone_number
22
+ attribute :phone_number, default: '555-555-5555'
21
23
 
22
24
  end
23
25
  ```
24
26
 
27
+ ## Saving a resource
28
+ Served follows resourceful standards. When a resource is initially saved a **POST** request will be sent
29
+ to the service. When the resource already exists, a **PUT** request will be sent. Served determines if
30
+ a resource is new or not based on the presence of an id.
31
+
25
32
  # Configuration
26
33
 
27
34
  Served is configured using ```Served.config```.
@@ -23,15 +23,15 @@ module Served
23
23
  # class SomeResource
24
24
  # attribute :attr1
25
25
  # end
26
- def attribute(name)
26
+ def attribute(name, options={})
27
27
  return if attributes.include?(name)
28
- attributes << name
28
+ attributes[name] = options
29
29
  attr_accessor name
30
30
  end
31
31
 
32
- # @return [Array] declared attributes for the resources
32
+ # @return [Hash] declared attributes for the resources
33
33
  def attributes
34
- @attributes ||= []
34
+ @attributes ||= {}
35
35
  end
36
36
 
37
37
  # Looks up a resource on the service by id. For example `SomeResource.find(5)` would call `/some_resources/5`
@@ -98,7 +98,7 @@ module Served
98
98
  #
99
99
  # @param [Boolean] with_values whether or not to return all attributes or only those whose values are not nil
100
100
  def attributes
101
- Hash[self.class.attributes.collect { |name| [name, send(name)] }]
101
+ Hash[self.class.attributes.keys.collect { |name| [name, send(name)] }]
102
102
  end
103
103
 
104
104
  # Reloads the resource using attributes from the service
@@ -141,7 +141,17 @@ module Served
141
141
 
142
142
 
143
143
  def reload_with_attributes(attributes)
144
- attributes.each { |name, value| set_attribute(name.to_sym, value) }
144
+ attributes.each do |name, value|
145
+ set_attribute(name.to_sym, value)
146
+ end
147
+ set_attribute_defaults
148
+ end
149
+
150
+ def set_attribute_defaults
151
+ self.class.attributes.each do |attr, options|
152
+ next if options[:default].nil? || send(attr)
153
+ set_attribute(attr, options[:default])
154
+ end
145
155
  end
146
156
 
147
157
  def set_attribute(name, value)
@@ -1,3 +1,3 @@
1
1
  module Served
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: served
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jarod Reid
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-01 00:00:00.000000000 Z
11
+ date: 2015-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  version: '0'
126
126
  requirements: []
127
127
  rubyforge_project:
128
- rubygems_version: 2.4.8
128
+ rubygems_version: 2.4.7
129
129
  signing_key:
130
130
  specification_version: 4
131
131
  summary: Served provides an easy to use model layer for communicating with disributed