json_api_client 0.2.4 → 0.3.0

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: 6e195eadd40239f5f99664964d3a590391dec380
4
- data.tar.gz: e5f3c9c5a20df353acff52f8443cad0dc672fcb6
3
+ metadata.gz: 03f3ebad69192424dfef02c6b9e285ed0b9d9b6c
4
+ data.tar.gz: c2964f6af0ef14bc87785e66608040de04f9aef3
5
5
  SHA512:
6
- metadata.gz: 2b806a5c622f8c170952b61cdc9c4d9283710fa9afcfef03e4c41e47809c492b22b00fdc6870f3236306186fd3af8c47691c623ae8cb813e917cd28e6646db4b
7
- data.tar.gz: a695a07000cd0302a97b1990b29f6b3e837052e7ed1a0f28fb6b57c22425f65213c455ea146fb8b2254ce62348f002ec56f77ae63208ccec609457f4bb95918b
6
+ metadata.gz: a293d1e82116f8021b31b0f3174a11fd8ae91d5a28268c279ff6ee5958b5b88c286381f6db692cfb09aa123e06d2390db87d351aa92eda953e71f8c4df80d317
7
+ data.tar.gz: eb601756c170737bdd82cd05653661d1fa716227947a6f84bb22c77af79b231a38755c363aefdfc6e8cdd5743de7bff18cf16d05223d2c929e61ddbba96f63d5
@@ -3,7 +3,8 @@ module JsonApiClient
3
3
 
4
4
  attr_reader :faraday
5
5
 
6
- def initialize(site)
6
+ def initialize(options = {})
7
+ site = options.fetch(:site)
7
8
  @faraday = Faraday.new(site) do |builder|
8
9
  builder.request :url_encoded
9
10
  builder.use Middleware::JsonRequest
@@ -17,6 +18,7 @@ module JsonApiClient
17
18
  # insert middleware before ParseJson - middleware executed in reverse order -
18
19
  # inserted middleware will run after json parsed
19
20
  def use(middleware, *args, &block)
21
+ return if faraday.builder.locked?
20
22
  faraday.builder.insert_before(Middleware::ParseJson, middleware, *args, &block)
21
23
  end
22
24
 
@@ -21,16 +21,6 @@ module JsonApiClient
21
21
  save
22
22
  end
23
23
 
24
- def method_missing(method, *args, &block)
25
- if match = method.to_s.match(/^(.*)=$/)
26
- set_attribute(match[1], args.first)
27
- elsif has_attribute?(method)
28
- attributes[method]
29
- else
30
- super
31
- end
32
- end
33
-
34
24
  def persisted?
35
25
  attributes.has_key?(primary_key)
36
26
  end
@@ -43,8 +33,26 @@ module JsonApiClient
43
33
  attributes.fetch(primary_key, "").to_s
44
34
  end
45
35
 
36
+ def respond_to?(method, include_private = false)
37
+ if (method.to_s =~ /^(.*)=$/) || has_attribute?(method)
38
+ true
39
+ else
40
+ super
41
+ end
42
+ end
43
+
46
44
  protected
47
45
 
46
+ def method_missing(method, *args, &block)
47
+ if method.to_s =~ /^(.*)=$/
48
+ set_attribute($1, args.first)
49
+ elsif has_attribute?(method)
50
+ attributes[method]
51
+ else
52
+ super
53
+ end
54
+ end
55
+
48
56
  def read_attribute(name)
49
57
  attributes.fetch(name, nil)
50
58
  end
@@ -59,4 +67,4 @@ module JsonApiClient
59
67
 
60
68
  end
61
69
  end
62
- end
70
+ end
@@ -8,8 +8,9 @@ module JsonApiClient
8
8
  extend Forwardable
9
9
  def_delegators :new_scope, :where, :order, :includes, :all, :paginate, :page, :first
10
10
  end
11
- class_attribute :connection_class
11
+ class_attribute :connection_class, :connection_object, :connection_options
12
12
  self.connection_class = Connection
13
+ self.connection_options = {}
13
14
  end
14
15
 
15
16
  module ClassMethods
@@ -17,18 +18,16 @@ module JsonApiClient
17
18
  Scope.new(self)
18
19
  end
19
20
 
20
- def connection
21
- @connection ||= begin
22
- super
23
- rescue
24
- build_connection
25
- end
26
- yield(@connection) if block_given?
27
- @connection
21
+ def connection(&block)
22
+ build_connection(&block)
23
+ connection_object
28
24
  end
29
25
 
30
26
  def build_connection
31
- connection_class.new(site)
27
+ return connection_object unless connection_object.nil?
28
+ self.connection_object = connection_class.new(connection_options.merge(site: site)).tap do |conn|
29
+ yield(conn) if block_given?
30
+ end
32
31
  end
33
32
  end
34
33
 
@@ -1,3 +1,3 @@
1
1
  module JsonApiClient
2
- VERSION = "0.2.4"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_api_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Ching
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-20 00:00:00.000000000 Z
11
+ date: 2014-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport