active_remote 1.5.9 → 1.6.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 +4 -4
- data/lib/active_remote/association.rb +1 -1
- data/lib/active_remote/base.rb +2 -0
- data/lib/active_remote/bulk.rb +2 -2
- data/lib/active_remote/dsl.rb +2 -2
- data/lib/active_remote/integration.rb +52 -0
- data/lib/active_remote/persistence.rb +3 -3
- data/lib/active_remote/version.rb +1 -1
- data/spec/lib/active_remote/integration_spec.rb +37 -0
- data/spec/lib/active_remote/search_spec.rb +1 -1
- data/spec/lib/active_remote/serializers/json_spec.rb +1 -1
- data/spec/support/models/tag.rb +1 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e660e679338d45a8815db30aed43a7f2376d3db3
|
4
|
+
data.tar.gz: bf4afbe98337b384a369df5cb5d4b7ad19d3d009
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5bfb0fb12ba5dd76c11fa9bebea904bdad40c74c6be49cf23556589a687bcfd01e51e1ef08ddf41a520bdbc30fab514d05a22e81cdb0b9cb02d7ceba1a427cf0
|
7
|
+
data.tar.gz: 3a95c65136b76bc0b0e99b23a5ad781f898d28075f4516bf38c3121f0717846413a7fe5bc284fd4e309ea0d6326bc8e68f998daf8f7c44ce8f4075b318b65adc
|
data/lib/active_remote/base.rb
CHANGED
@@ -3,6 +3,7 @@ require 'active_remote/attributes'
|
|
3
3
|
require 'active_remote/bulk'
|
4
4
|
require 'active_remote/dirty'
|
5
5
|
require 'active_remote/dsl'
|
6
|
+
require 'active_remote/integration'
|
6
7
|
require 'active_remote/persistence'
|
7
8
|
require 'active_remote/publication'
|
8
9
|
require 'active_remote/rpc'
|
@@ -19,6 +20,7 @@ module ActiveRemote
|
|
19
20
|
include ::ActiveRemote::Attributes
|
20
21
|
include ::ActiveRemote::Bulk
|
21
22
|
include ::ActiveRemote::DSL
|
23
|
+
include ::ActiveRemote::Integration
|
22
24
|
include ::ActiveRemote::Persistence
|
23
25
|
include ::ActiveRemote::Publication
|
24
26
|
include ::ActiveRemote::RPC
|
data/lib/active_remote/bulk.rb
CHANGED
data/lib/active_remote/dsl.rb
CHANGED
@@ -4,8 +4,8 @@ module ActiveRemote
|
|
4
4
|
module DSL
|
5
5
|
def self.included(klass)
|
6
6
|
klass.class_eval do
|
7
|
-
extend ActiveRemote::DSL::ClassMethods
|
8
|
-
include ActiveRemote::DSL::InstanceMethods
|
7
|
+
extend ::ActiveRemote::DSL::ClassMethods
|
8
|
+
include ::ActiveRemote::DSL::InstanceMethods
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module ActiveRemote
|
2
|
+
module Integration
|
3
|
+
def self.included(klass)
|
4
|
+
klass.class_eval do
|
5
|
+
unless singleton_methods.include?(:cache_timestamp_format)
|
6
|
+
##
|
7
|
+
# :singleton-method:
|
8
|
+
# Indicates the format used to generate the timestamp format in the cache key.
|
9
|
+
# This is +:number+, by default.
|
10
|
+
#
|
11
|
+
def self.cache_timestamp_format
|
12
|
+
:number
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
##
|
20
|
+
# Returns a String, which can be used for constructing an URL to this
|
21
|
+
# object. The default implementation returns this record's guid as a String,
|
22
|
+
# or nil if this record's unsaved.
|
23
|
+
#
|
24
|
+
# user = User.search(:name => 'Phusion')
|
25
|
+
# user.to_param # => "GUID-1"
|
26
|
+
#
|
27
|
+
def to_param
|
28
|
+
self[:guid] && self[:guid].to_s
|
29
|
+
end
|
30
|
+
|
31
|
+
##
|
32
|
+
# Returns a cache key that can be used to identify this record.
|
33
|
+
#
|
34
|
+
# ==== Examples
|
35
|
+
#
|
36
|
+
# Product.new.cache_key # => "products/new"
|
37
|
+
# Product.search(:guid => "derp-5").cache_key # => "products/derp-5" (updated_at not available)
|
38
|
+
# Person.search(:guid => "derp-5").cache_key # => "people/derp-5-20071224150000" (updated_at available)
|
39
|
+
#
|
40
|
+
def cache_key
|
41
|
+
case
|
42
|
+
when new_record? then
|
43
|
+
"#{self.class.name.underscore}/new"
|
44
|
+
when timestamp = self[:updated_at] then
|
45
|
+
timestamp = timestamp.utc.to_s(self.class.cache_timestamp_format)
|
46
|
+
"#{self.class.name.underscore}/#{self.to_param}-#{timestamp}"
|
47
|
+
else
|
48
|
+
"#{self.class.name.underscore}/#{self.to_param}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -4,9 +4,9 @@ module ActiveRemote
|
|
4
4
|
module Persistence
|
5
5
|
def self.included(klass)
|
6
6
|
klass.class_eval do
|
7
|
-
extend ActiveRemote::Persistence::ClassMethods
|
8
|
-
include ActiveRemote::Persistence::InstanceMethods
|
9
|
-
include ActiveRemote::RPC
|
7
|
+
extend ::ActiveRemote::Persistence::ClassMethods
|
8
|
+
include ::ActiveRemote::Persistence::InstanceMethods
|
9
|
+
include ::ActiveRemote::RPC
|
10
10
|
|
11
11
|
# Allow users to create callbacks around a `save` call.
|
12
12
|
#
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ::ActiveRemote::Integration do
|
4
|
+
let(:guid) { "GUID-derp" }
|
5
|
+
subject { Tag.new(:guid => guid) }
|
6
|
+
|
7
|
+
context "#to_param" do
|
8
|
+
# API
|
9
|
+
specify { subject.should respond_to(:to_param) }
|
10
|
+
|
11
|
+
it "returns the guid if the guid is present (by default)" do
|
12
|
+
subject.to_param.should eq(guid)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "#cache_key" do
|
17
|
+
# API
|
18
|
+
specify { subject.should respond_to(:cache_key) }
|
19
|
+
|
20
|
+
it "sets 'new' as the identifier when the record has not been persisted" do
|
21
|
+
subject.should_receive(:new_record?).and_return(true)
|
22
|
+
subject.cache_key.should match(/tag\/new/)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "sets the cache_key to the class/guid as a default" do
|
26
|
+
subject.should_receive(:new_record?).and_return(false)
|
27
|
+
subject.cache_key.should eq("tag/#{guid}")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "adds the 'updated_at' attribute to the cache_key if updated_at is present" do
|
31
|
+
twenty_o_one_one = subject[:updated_at] = DateTime.new(2001, 01, 01)
|
32
|
+
subject.should_receive(:new_record?).and_return(false)
|
33
|
+
subject.cache_key.should eq("tag/#{guid}-#{twenty_o_one_one.to_s(:number)}")
|
34
|
+
subject[:updated_at] = nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -76,7 +76,7 @@ describe ActiveRemote::Search do
|
|
76
76
|
|
77
77
|
describe "#reload" do
|
78
78
|
let(:args) { { :guid => 'foo' } }
|
79
|
-
let(:attributes) { HashWithIndifferentAccess.new(:guid => 'foo', :name => 'bar') }
|
79
|
+
let(:attributes) { HashWithIndifferentAccess.new(:guid => 'foo', :name => 'bar', :updated_at => nil) }
|
80
80
|
|
81
81
|
subject { Tag.new(args) }
|
82
82
|
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe ActiveRemote::Serializers::JSON do
|
4
4
|
describe "#as_json" do
|
5
|
-
let(:attributes) { { :guid => 'foo', :name => 'bar' } }
|
5
|
+
let(:attributes) { { :guid => 'foo', :name => 'bar', :updated_at => nil } }
|
6
6
|
let(:serializable_attributes) { { "tag" => attributes.stringify_keys } }
|
7
7
|
|
8
8
|
subject { Tag.new(attributes) }
|
data/spec/support/models/tag.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_remote
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Hutchison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_attr
|
@@ -146,6 +146,7 @@ files:
|
|
146
146
|
- lib/active_remote/dirty.rb
|
147
147
|
- lib/active_remote/dsl.rb
|
148
148
|
- lib/active_remote/errors.rb
|
149
|
+
- lib/active_remote/integration.rb
|
149
150
|
- lib/active_remote/persistence.rb
|
150
151
|
- lib/active_remote/publication.rb
|
151
152
|
- lib/active_remote/rpc.rb
|
@@ -164,6 +165,7 @@ files:
|
|
164
165
|
- spec/lib/active_remote/bulk_spec.rb
|
165
166
|
- spec/lib/active_remote/dirty_spec.rb
|
166
167
|
- spec/lib/active_remote/dsl_spec.rb
|
168
|
+
- spec/lib/active_remote/integration_spec.rb
|
167
169
|
- spec/lib/active_remote/persistence_spec.rb
|
168
170
|
- spec/lib/active_remote/publication_spec.rb
|
169
171
|
- spec/lib/active_remote/rpc_spec.rb
|
@@ -220,6 +222,7 @@ test_files:
|
|
220
222
|
- spec/lib/active_remote/bulk_spec.rb
|
221
223
|
- spec/lib/active_remote/dirty_spec.rb
|
222
224
|
- spec/lib/active_remote/dsl_spec.rb
|
225
|
+
- spec/lib/active_remote/integration_spec.rb
|
223
226
|
- spec/lib/active_remote/persistence_spec.rb
|
224
227
|
- spec/lib/active_remote/publication_spec.rb
|
225
228
|
- spec/lib/active_remote/rpc_spec.rb
|