active_remote 1.7.1 → 1.8.0.rc1
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 +32 -11
- data/lib/active_remote/version.rb +1 -1
- data/spec/lib/active_remote/association_spec.rb +108 -23
- data/spec/support/definitions/author.proto +1 -0
- data/spec/support/definitions/post.proto +3 -1
- data/spec/support/definitions/support/protobuf/category.proto +5 -1
- data/spec/support/models/author.rb +6 -0
- data/spec/support/models/category.rb +8 -4
- data/spec/support/models/post.rb +3 -5
- data/spec/support/protobuf/author.pb.rb +13 -6
- data/spec/support/protobuf/post.pb.rb +14 -6
- data/spec/support/protobuf/tag.pb.rb +12 -6
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f15daf36d3c8b8835e43b8fdbb36558e9272bf62
|
4
|
+
data.tar.gz: ac509c0f6b2a10444c9b7fe1c8fc6a29dec7350e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30d4f0bef9362330f7a52adf478766d4a4c9a24c4a9b1e92c359d12f4824444b4d4a55b9a78e85fbfc70f448086dd366467dba82952d99728e552c1635e7d13b
|
7
|
+
data.tar.gz: 3f65730eb838053732644492642d4bd32d69d82cfe1be1452b75be61c08ca8f95212832364844d1b31c9b3acc885f7d09c2fcbfb0aeb5f4be873ef9bd01b767f
|
@@ -39,9 +39,12 @@ module ActiveRemote
|
|
39
39
|
#
|
40
40
|
def belongs_to(belongs_to_klass, options={})
|
41
41
|
perform_association(belongs_to_klass, options) do |klass, object|
|
42
|
-
foreign_key = options.fetch(:foreign_key) { :"#{
|
43
|
-
|
44
|
-
|
42
|
+
foreign_key = options.fetch(:foreign_key) { :"#{klass.name.demodulize.underscore}_guid" }
|
43
|
+
search_hash = {}
|
44
|
+
search_hash[:guid] = object.read_attribute(foreign_key)
|
45
|
+
search_hash[options[:scope]] = object.read_attribute(options[:scope]) if options.has_key?(:scope)
|
46
|
+
|
47
|
+
search_hash.values.any?(&:nil?) ? nil : klass.search(search_hash).first
|
45
48
|
end
|
46
49
|
end
|
47
50
|
|
@@ -76,9 +79,13 @@ module ActiveRemote
|
|
76
79
|
# end
|
77
80
|
#
|
78
81
|
def has_many(has_many_class, options={})
|
79
|
-
perform_association(
|
82
|
+
perform_association(has_many_class, options) do |klass, object|
|
80
83
|
foreign_key = options.fetch(:foreign_key) { :"#{object.class.name.demodulize.underscore}_guid" }
|
81
|
-
|
84
|
+
search_hash = {}
|
85
|
+
search_hash[foreign_key] = object.guid
|
86
|
+
search_hash[options[:scope]] = object.read_attribute(options[:scope]) if options.has_key?(:scope)
|
87
|
+
|
88
|
+
search_hash.values.any?(&:nil?) ? [] : klass.search(search_hash)
|
82
89
|
end
|
83
90
|
end
|
84
91
|
|
@@ -99,8 +106,6 @@ module ActiveRemote
|
|
99
106
|
#
|
100
107
|
# class User
|
101
108
|
# has_one :client
|
102
|
-
# end
|
103
|
-
#
|
104
109
|
# An equivalent code snippet without a `has_one` declaration would be:
|
105
110
|
#
|
106
111
|
# ====Examples
|
@@ -114,19 +119,34 @@ module ActiveRemote
|
|
114
119
|
def has_one(has_one_klass, options={})
|
115
120
|
perform_association(has_one_klass, options) do |klass, object|
|
116
121
|
foreign_key = options.fetch(:foreign_key) { :"#{object.class.name.demodulize.underscore}_guid" }
|
117
|
-
|
122
|
+
search_hash = {}
|
123
|
+
search_hash[foreign_key] = object.guid
|
124
|
+
search_hash[options[:scope]] = object.read_attribute(options[:scope]) if options.has_key?(:scope)
|
125
|
+
|
126
|
+
search_hash.values.any?(&:nil?) ? nil : klass.search(search_hash).first
|
118
127
|
end
|
119
128
|
end
|
120
129
|
|
130
|
+
# when requiring an attribute on your search, we verify the attribute
|
131
|
+
# exists on both models
|
132
|
+
def validate_scoped_attributes(associated_class, object_class, options)
|
133
|
+
raise "Could not find attribute: '#{options[:scope]}' on #{object_class}" unless object_class.public_instance_methods.include?(options[:scope])
|
134
|
+
raise "Could not find attribute: '#{options[:scope]}' on #{associated_class}" unless associated_class.public_instance_methods.include?(options[:scope])
|
135
|
+
end
|
136
|
+
|
121
137
|
private
|
122
138
|
|
123
|
-
def perform_association(associated_klass,
|
139
|
+
def perform_association(associated_klass, options={})
|
140
|
+
|
124
141
|
define_method(associated_klass) do
|
142
|
+
klass_name = options.fetch(:class_name){ associated_klass }
|
143
|
+
klass = klass_name.to_s.classify.constantize
|
144
|
+
|
145
|
+
self.class.validate_scoped_attributes(klass, self.class, options) if options.has_key?(:scope)
|
146
|
+
|
125
147
|
value = instance_variable_get(:"@#{associated_klass}")
|
126
148
|
|
127
149
|
unless value
|
128
|
-
klass_name = optionz.fetch(:class_name){ associated_klass }
|
129
|
-
klass = klass_name.to_s.classify.constantize
|
130
150
|
value = yield( klass, self )
|
131
151
|
instance_variable_set(:"@#{associated_klass}", value)
|
132
152
|
end
|
@@ -134,6 +154,7 @@ module ActiveRemote
|
|
134
154
|
return value
|
135
155
|
end
|
136
156
|
end
|
157
|
+
|
137
158
|
end
|
138
159
|
end
|
139
160
|
end
|
@@ -7,8 +7,9 @@ describe ActiveRemote::Association do
|
|
7
7
|
describe ".belongs_to" do
|
8
8
|
context "simple association" do
|
9
9
|
let(:author_guid) { "AUT-123" }
|
10
|
-
|
11
|
-
|
10
|
+
let(:user_guid) { "USR-123" }
|
11
|
+
let(:default_category_guid) { "CAT-123" }
|
12
|
+
subject { Post.new(:author_guid => author_guid, :user_guid => user_guid) }
|
12
13
|
|
13
14
|
it { should respond_to(:author) }
|
14
15
|
|
@@ -36,6 +37,32 @@ describe ActiveRemote::Association do
|
|
36
37
|
subject.author.should be_nil
|
37
38
|
end
|
38
39
|
end
|
40
|
+
|
41
|
+
context 'scoped field' do
|
42
|
+
it { should respond_to(:user) }
|
43
|
+
|
44
|
+
it "searches the associated model for multiple records" do
|
45
|
+
Author.should_receive(:search).with(:guid => subject.author_guid, :user_guid => subject.user_guid).and_return(records)
|
46
|
+
subject.user.should eq(record)
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when user_guid doesnt exist on model 'do
|
50
|
+
before { subject.stub(:respond_to?).with("user_guid").and_return(false) }
|
51
|
+
|
52
|
+
it 'raises an error' do
|
53
|
+
expect {subject.user}.to raise_error
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when user_guid doesnt exist on associated model 'do
|
58
|
+
before { Author.stub_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
|
59
|
+
|
60
|
+
it 'raises an error' do
|
61
|
+
expect {subject.user}.to raise_error
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
39
66
|
end
|
40
67
|
|
41
68
|
context "specific association with class name" do
|
@@ -46,19 +73,19 @@ describe ActiveRemote::Association do
|
|
46
73
|
|
47
74
|
it "searches the associated model for a single record" do
|
48
75
|
Author.should_receive(:search).with(:guid => subject.author_guid).and_return(records)
|
49
|
-
subject.
|
76
|
+
subject.coauthor.should eq record
|
50
77
|
end
|
51
78
|
end
|
52
79
|
|
53
80
|
context "specific association with class name and foreign_key" do
|
54
81
|
let(:author_guid) { "AUT-456" }
|
55
82
|
|
56
|
-
subject { Post.new(:
|
83
|
+
subject { Post.new(:bestseller_guid => author_guid) }
|
57
84
|
it { should respond_to(:bestseller) }
|
58
85
|
|
59
86
|
it "searches the associated model for a single record" do
|
60
87
|
Author.should_receive(:search).with(:guid => subject.bestseller_guid).and_return(records)
|
61
|
-
subject.
|
88
|
+
subject.bestseller.should eq record
|
62
89
|
end
|
63
90
|
end
|
64
91
|
end
|
@@ -66,8 +93,9 @@ describe ActiveRemote::Association do
|
|
66
93
|
describe ".has_many" do
|
67
94
|
let(:records) { [ record, record, record ] }
|
68
95
|
let(:guid) { "AUT-123" }
|
96
|
+
let(:user_guid) { "USR-123" }
|
69
97
|
|
70
|
-
subject { Author.new(:guid => guid) }
|
98
|
+
subject { Author.new(:guid => guid, :user_guid => user_guid) }
|
71
99
|
|
72
100
|
it { should respond_to(:posts) }
|
73
101
|
|
@@ -113,55 +141,112 @@ describe ActiveRemote::Association do
|
|
113
141
|
subject.bestseller_posts.should eq(records)
|
114
142
|
end
|
115
143
|
end
|
144
|
+
|
145
|
+
context 'scoped field' do
|
146
|
+
it { should respond_to(:user_posts) }
|
147
|
+
|
148
|
+
it "searches the associated model for multiple records" do
|
149
|
+
Post.should_receive(:search).with(:author_guid => subject.guid, :user_guid => subject.user_guid).and_return(records)
|
150
|
+
subject.user_posts.should eq(records)
|
151
|
+
end
|
152
|
+
|
153
|
+
context 'when user_guid doesnt exist on model 'do
|
154
|
+
before { subject.stub(:respond_to?).with("user_guid").and_return(false) }
|
155
|
+
|
156
|
+
it 'raises an error' do
|
157
|
+
expect {subject.user_posts}.to raise_error
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
context 'when user_guid doesnt exist on associated model 'do
|
162
|
+
before { Post.stub_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
|
163
|
+
|
164
|
+
it 'raises an error' do
|
165
|
+
expect {subject.user_posts}.to raise_error
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
116
169
|
end
|
117
170
|
|
118
171
|
describe ".has_one" do
|
119
|
-
let(:guid) { "
|
172
|
+
let(:guid) { "CAT-123" }
|
173
|
+
let(:user_guid) { "USR-123" }
|
174
|
+
let(:category_attributes) {
|
175
|
+
{
|
176
|
+
:guid => guid,
|
177
|
+
:user_guid => user_guid
|
178
|
+
}
|
179
|
+
}
|
120
180
|
|
121
|
-
subject {
|
181
|
+
subject { Category.new(category_attributes) }
|
122
182
|
|
123
|
-
it { should respond_to(:
|
183
|
+
it { should respond_to(:author) }
|
124
184
|
|
125
185
|
it "searches the associated model for all associated records" do
|
126
|
-
|
127
|
-
subject.
|
186
|
+
Author.should_receive(:search).with(:category_guid => subject.guid).and_return(records)
|
187
|
+
subject.author.should eq record
|
128
188
|
end
|
129
189
|
|
130
190
|
it "memoizes the result record" do
|
131
|
-
|
132
|
-
3.times { subject.
|
191
|
+
Author.should_receive(:search).once.with(:category_guid => subject.guid).and_return(records)
|
192
|
+
3.times { subject.author.should eq record }
|
133
193
|
end
|
134
194
|
|
135
195
|
context "when guid is nil" do
|
136
|
-
subject {
|
196
|
+
subject { Category.new }
|
137
197
|
|
138
198
|
it "returns nil" do
|
139
|
-
subject.
|
199
|
+
subject.author.should be_nil
|
140
200
|
end
|
141
201
|
end
|
142
202
|
|
143
203
|
context "when the search is empty" do
|
144
204
|
it "returns a nil value" do
|
145
|
-
|
146
|
-
subject.
|
205
|
+
Author.should_receive(:search).with(:category_guid => subject.guid).and_return([])
|
206
|
+
subject.author.should be_nil
|
147
207
|
end
|
148
208
|
end
|
149
209
|
|
150
210
|
context "specific association with class name" do
|
151
|
-
it { should respond_to(:
|
211
|
+
it { should respond_to(:senior_author) }
|
152
212
|
|
153
213
|
it "searches the associated model for a single record" do
|
154
|
-
|
155
|
-
subject.
|
214
|
+
Author.should_receive(:search).with(:category_guid => subject.guid).and_return(records)
|
215
|
+
subject.senior_author.should eq record
|
156
216
|
end
|
157
217
|
end
|
158
218
|
|
159
219
|
context "specific association with class name and foreign_key" do
|
160
|
-
it { should respond_to(:
|
220
|
+
it { should respond_to(:primary_editor) }
|
161
221
|
|
162
222
|
it "searches the associated model for a single record" do
|
163
|
-
|
164
|
-
subject.
|
223
|
+
Author.should_receive(:search).with(:editor_guid => subject.guid).and_return(records)
|
224
|
+
subject.primary_editor.should eq record
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
context 'scoped field' do
|
229
|
+
it { should respond_to(:chief_editor) }
|
230
|
+
|
231
|
+
it "searches the associated model for multiple records" do
|
232
|
+
Author.should_receive(:search).with(:chief_editor_guid => subject.guid, :user_guid => subject.user_guid).and_return(records)
|
233
|
+
subject.chief_editor.should eq(record)
|
234
|
+
end
|
235
|
+
|
236
|
+
context 'when user_guid doesnt exist on model 'do
|
237
|
+
before { subject.stub(:respond_to?).with("user_guid").and_return(false) }
|
238
|
+
|
239
|
+
it 'raises an error' do
|
240
|
+
expect {subject.chief_editor}.to raise_error
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
context 'when user_guid doesnt exist on associated model 'do
|
245
|
+
before { Author.stub_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
|
246
|
+
|
247
|
+
it 'raises an error' do
|
248
|
+
expect {subject.chief_editor}.to raise_error
|
249
|
+
end
|
165
250
|
end
|
166
251
|
end
|
167
252
|
end
|
@@ -3,12 +3,13 @@ package generic.remote;
|
|
3
3
|
import "support/protobuf/error.proto";
|
4
4
|
import "support/protobuf/category.proto";
|
5
5
|
|
6
|
-
message Post {
|
6
|
+
message Post {
|
7
7
|
optional string guid = 1;
|
8
8
|
optional string name = 2;
|
9
9
|
optional string author_guid = 3;
|
10
10
|
optional Category category = 4;
|
11
11
|
repeated Error errors = 5;
|
12
|
+
optional string user_guid = 6;
|
12
13
|
}
|
13
14
|
|
14
15
|
message Posts {
|
@@ -19,6 +20,7 @@ message PostRequest {
|
|
19
20
|
repeated string guid = 1;
|
20
21
|
repeated string name = 2;
|
21
22
|
repeated string author_guid = 3;
|
23
|
+
repeated string user_guid = 4;
|
22
24
|
}
|
23
25
|
|
24
26
|
service PostService {
|
@@ -2,10 +2,14 @@ package generic.remote;
|
|
2
2
|
|
3
3
|
import "support/protobuf/error.proto";
|
4
4
|
|
5
|
-
message Category {
|
5
|
+
message Category {
|
6
6
|
optional string guid = 1;
|
7
7
|
optional string name = 2;
|
8
8
|
repeated Error errors = 3;
|
9
|
+
optional string user_guid = 4;
|
10
|
+
optional string author_guid = 4;
|
11
|
+
optional string chief_editor_guid = 4;
|
12
|
+
optional string editor_guid = 4;
|
9
13
|
}
|
10
14
|
|
11
15
|
message Categories {
|
@@ -8,9 +8,15 @@ class Author < ::ActiveRemote::Base
|
|
8
8
|
|
9
9
|
attribute :guid
|
10
10
|
attribute :name
|
11
|
+
attribute :user_guid
|
12
|
+
attribute :chief_editor_guid
|
13
|
+
attribute :editor_guid
|
14
|
+
attribute :category_guid
|
11
15
|
|
12
16
|
has_many :posts
|
17
|
+
has_many :user_posts, :class_name => "::Post", :scope => :user_guid
|
13
18
|
has_many :flagged_posts, :class_name => "::Post"
|
14
19
|
has_many :bestseller_posts, :class_name => "::Post", :foreign_key => :bestseller_guid
|
15
20
|
|
21
|
+
belongs_to :category
|
16
22
|
end
|
@@ -7,10 +7,14 @@ class Category < ::ActiveRemote::Base
|
|
7
7
|
service_class ::Generic::Remote::CategoryService
|
8
8
|
|
9
9
|
attribute :guid
|
10
|
-
attribute :
|
11
|
-
attribute :
|
10
|
+
attribute :user_guid
|
11
|
+
attribute :chief_editor_guid
|
12
12
|
|
13
|
-
|
13
|
+
has_many :posts
|
14
|
+
|
15
|
+
has_one :author
|
16
|
+
has_one :senior_author, :class_name => "::Author"
|
17
|
+
has_one :primary_editor, :class_name => "::Author", :foreign_key => :editor_guid
|
18
|
+
has_one :chief_editor, :class_name => "::Author", :scope => :user_guid, :foreign_key => :chief_editor_guid
|
14
19
|
|
15
|
-
alias_method :template_post_guid, :post_id
|
16
20
|
end
|
data/spec/support/models/post.rb
CHANGED
@@ -9,13 +9,11 @@ class Post < ::ActiveRemote::Base
|
|
9
9
|
attribute :guid
|
10
10
|
attribute :name
|
11
11
|
attribute :author_guid
|
12
|
+
attribute :user_guid
|
13
|
+
attribute :bestseller_guid
|
12
14
|
|
13
15
|
belongs_to :author
|
14
16
|
belongs_to :coauthor, :class_name => '::Author'
|
15
17
|
belongs_to :bestseller, :class_name => '::Author', :foreign_key => :bestseller_guid
|
16
|
-
|
17
|
-
has_one :main_category, :class_name => '::Category'
|
18
|
-
has_one :default_category, :class_name => '::Category', :foreign_key => :template_post_guid
|
19
|
-
|
20
|
-
alias_method :bestseller_guid, :author_guid
|
18
|
+
belongs_to :user, :class_name => '::Author', :scope => :user_guid
|
21
19
|
end
|
@@ -4,6 +4,7 @@
|
|
4
4
|
require 'protobuf/message'
|
5
5
|
require 'protobuf/rpc/service'
|
6
6
|
|
7
|
+
|
7
8
|
##
|
8
9
|
# Imports
|
9
10
|
#
|
@@ -11,14 +12,15 @@ require 'support/protobuf/error.pb'
|
|
11
12
|
|
12
13
|
module Generic
|
13
14
|
module Remote
|
14
|
-
|
15
|
+
|
15
16
|
##
|
16
17
|
# Message Classes
|
17
18
|
#
|
18
19
|
class Author < ::Protobuf::Message; end
|
19
20
|
class Authors < ::Protobuf::Message; end
|
20
21
|
class AuthorRequest < ::Protobuf::Message; end
|
21
|
-
|
22
|
+
|
23
|
+
|
22
24
|
##
|
23
25
|
# Message Fields
|
24
26
|
#
|
@@ -26,19 +28,21 @@ module Generic
|
|
26
28
|
optional ::Protobuf::Field::StringField, :guid, 1
|
27
29
|
optional ::Protobuf::Field::StringField, :name, 2
|
28
30
|
repeated ::Generic::Error, :errors, 3
|
31
|
+
optional ::Protobuf::Field::StringField, :user_guid, 4
|
29
32
|
end
|
30
|
-
|
33
|
+
|
31
34
|
class Authors
|
32
35
|
repeated ::Generic::Remote::Author, :records, 1
|
33
36
|
end
|
34
|
-
|
37
|
+
|
35
38
|
class AuthorRequest
|
36
39
|
repeated ::Protobuf::Field::StringField, :guid, 1
|
37
40
|
repeated ::Protobuf::Field::StringField, :name, 2
|
38
41
|
end
|
39
|
-
|
42
|
+
|
43
|
+
|
40
44
|
##
|
41
|
-
#
|
45
|
+
# Service Classes
|
42
46
|
#
|
43
47
|
class AuthorService < ::Protobuf::Rpc::Service
|
44
48
|
rpc :search, ::Generic::Remote::AuthorRequest, ::Generic::Remote::Authors
|
@@ -50,5 +54,8 @@ module Generic
|
|
50
54
|
rpc :delete_all, ::Generic::Remote::Authors, ::Generic::Remote::Authors
|
51
55
|
rpc :destroy_all, ::Generic::Remote::Authors, ::Generic::Remote::Authors
|
52
56
|
end
|
57
|
+
|
53
58
|
end
|
59
|
+
|
54
60
|
end
|
61
|
+
|
@@ -4,6 +4,7 @@
|
|
4
4
|
require 'protobuf/message'
|
5
5
|
require 'protobuf/rpc/service'
|
6
6
|
|
7
|
+
|
7
8
|
##
|
8
9
|
# Imports
|
9
10
|
#
|
@@ -12,14 +13,15 @@ require 'support/protobuf/category.pb'
|
|
12
13
|
|
13
14
|
module Generic
|
14
15
|
module Remote
|
15
|
-
|
16
|
+
|
16
17
|
##
|
17
18
|
# Message Classes
|
18
19
|
#
|
19
20
|
class Post < ::Protobuf::Message; end
|
20
21
|
class Posts < ::Protobuf::Message; end
|
21
22
|
class PostRequest < ::Protobuf::Message; end
|
22
|
-
|
23
|
+
|
24
|
+
|
23
25
|
##
|
24
26
|
# Message Fields
|
25
27
|
#
|
@@ -29,20 +31,23 @@ module Generic
|
|
29
31
|
optional ::Protobuf::Field::StringField, :author_guid, 3
|
30
32
|
optional ::Generic::Remote::Category, :category, 4
|
31
33
|
repeated ::Generic::Error, :errors, 5
|
34
|
+
optional ::Protobuf::Field::StringField, :user_guid, 6
|
32
35
|
end
|
33
|
-
|
36
|
+
|
34
37
|
class Posts
|
35
38
|
repeated ::Generic::Remote::Post, :records, 1
|
36
39
|
end
|
37
|
-
|
40
|
+
|
38
41
|
class PostRequest
|
39
42
|
repeated ::Protobuf::Field::StringField, :guid, 1
|
40
43
|
repeated ::Protobuf::Field::StringField, :name, 2
|
41
44
|
repeated ::Protobuf::Field::StringField, :author_guid, 3
|
45
|
+
repeated ::Protobuf::Field::StringField, :user_guid, 4
|
42
46
|
end
|
43
|
-
|
47
|
+
|
48
|
+
|
44
49
|
##
|
45
|
-
#
|
50
|
+
# Service Classes
|
46
51
|
#
|
47
52
|
class PostService < ::Protobuf::Rpc::Service
|
48
53
|
rpc :search, ::Generic::Remote::PostRequest, ::Generic::Remote::Posts
|
@@ -54,5 +59,8 @@ module Generic
|
|
54
59
|
rpc :delete_all, ::Generic::Remote::Posts, ::Generic::Remote::Posts
|
55
60
|
rpc :destroy_all, ::Generic::Remote::Posts, ::Generic::Remote::Posts
|
56
61
|
end
|
62
|
+
|
57
63
|
end
|
64
|
+
|
58
65
|
end
|
66
|
+
|
@@ -4,6 +4,7 @@
|
|
4
4
|
require 'protobuf/message'
|
5
5
|
require 'protobuf/rpc/service'
|
6
6
|
|
7
|
+
|
7
8
|
##
|
8
9
|
# Imports
|
9
10
|
#
|
@@ -11,14 +12,15 @@ require 'support/protobuf/error.pb'
|
|
11
12
|
|
12
13
|
module Generic
|
13
14
|
module Remote
|
14
|
-
|
15
|
+
|
15
16
|
##
|
16
17
|
# Message Classes
|
17
18
|
#
|
18
19
|
class Tag < ::Protobuf::Message; end
|
19
20
|
class Tags < ::Protobuf::Message; end
|
20
21
|
class TagRequest < ::Protobuf::Message; end
|
21
|
-
|
22
|
+
|
23
|
+
|
22
24
|
##
|
23
25
|
# Message Fields
|
24
26
|
#
|
@@ -27,18 +29,19 @@ module Generic
|
|
27
29
|
optional ::Protobuf::Field::StringField, :name, 2
|
28
30
|
repeated ::Generic::Error, :errors, 3
|
29
31
|
end
|
30
|
-
|
32
|
+
|
31
33
|
class Tags
|
32
34
|
repeated ::Generic::Remote::Tag, :records, 1
|
33
35
|
end
|
34
|
-
|
36
|
+
|
35
37
|
class TagRequest
|
36
38
|
repeated ::Protobuf::Field::StringField, :guid, 1
|
37
39
|
repeated ::Protobuf::Field::StringField, :name, 2
|
38
40
|
end
|
39
|
-
|
41
|
+
|
42
|
+
|
40
43
|
##
|
41
|
-
#
|
44
|
+
# Service Classes
|
42
45
|
#
|
43
46
|
class TagService < ::Protobuf::Rpc::Service
|
44
47
|
rpc :search, ::Generic::Remote::TagRequest, ::Generic::Remote::Tags
|
@@ -50,5 +53,8 @@ module Generic
|
|
50
53
|
rpc :delete_all, ::Generic::Remote::Tags, ::Generic::Remote::Tags
|
51
54
|
rpc :destroy_all, ::Generic::Remote::Tags, ::Generic::Remote::Tags
|
52
55
|
end
|
56
|
+
|
53
57
|
end
|
58
|
+
|
54
59
|
end
|
60
|
+
|
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.8.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Hutchison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_attr
|
@@ -235,12 +235,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
235
235
|
version: '0'
|
236
236
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
237
237
|
requirements:
|
238
|
-
- - '
|
238
|
+
- - '>'
|
239
239
|
- !ruby/object:Gem::Version
|
240
|
-
version:
|
240
|
+
version: 1.3.1
|
241
241
|
requirements: []
|
242
242
|
rubyforge_project:
|
243
|
-
rubygems_version: 2.1
|
243
|
+
rubygems_version: 2.2.1
|
244
244
|
signing_key:
|
245
245
|
specification_version: 4
|
246
246
|
summary: Active Record for your platform
|