cylons 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,12 @@
1
+ require 'celluloid'
2
+ require 'cylons/rpc'
3
+ module Cylons
4
+ class Service
5
+ include ::Celluloid
6
+ include ::Cylons::RPC
7
+
8
+ class << self
9
+ attr_accessor :model
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,44 @@
1
+ require 'cylons/interface'
2
+ require 'cylons/remote_registry'
3
+
4
+ module Cylons
5
+ class ServiceManager
6
+ def self.start
7
+ ::Cylons.logger.info "LOADING REMOTES"
8
+ puts "LOADING REMOTES"
9
+ ::Cylons::RemoteDiscovery.load_remotes unless ::Cylons::RemoteDiscovery.loaded?
10
+ puts "STARTING LOCAL REMOTE SERVICES"
11
+ ::Cylons.logger.info "STARTING LOCAL REMOTE SERVICES"
12
+ start_services
13
+ end
14
+
15
+ def self.start_service(model_klass)
16
+ service_klass = build_service(model_klass)
17
+ service_klass.supervise_as service_klass.name.to_sym
18
+ end
19
+
20
+ def self.build_service(model_klass)
21
+ proxy_service_class_name = "#{model_klass.name}Service"
22
+ Object.const_set(proxy_service_class_name, Class.new(::Cylons::Service))
23
+ service_klass = proxy_service_class_name.constantize
24
+
25
+ service_klass.model = model_klass
26
+ puts "REGISTERING_SERVICE_FOR #{model_klass}"
27
+ service_klass
28
+ end
29
+
30
+ def self.start_services
31
+ ::Cylons::RemoteRegistry.remotes.each do |remote|
32
+ start_service(remote)
33
+ end if remotes?
34
+ end
35
+
36
+ def self.service_klass_name
37
+ "#{klass.name}Service"
38
+ end
39
+
40
+ def self.remotes?
41
+ ::Cylons::RemoteRegistry.remotes.any?
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module Cylons
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Cylons::RegistryAdapter do
4
+ # describe ".remotes?" do
5
+ # it "should return true if remotes were registered" do
6
+ # described_class.remotes?.should == false
7
+ # end
8
+ # end
9
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Cylons::RemoteRegistry do
4
+ describe ".remotes" do
5
+ it { described_class.remotes.should include(:product) }
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Cylons::ServiceManager do
4
+ describe ".remotes?" do
5
+ it "should return true if remotes were registered" do
6
+ described_class.remotes?.should == false
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ require 'simplecov'
5
+ SimpleCov.start do
6
+ add_filter '/spec/'
7
+ end
8
+
9
+ Bundler.require(:default, :development, :test)
10
+
11
+ RSpec.configure do |config|
12
+ end
metadata ADDED
@@ -0,0 +1,360 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cylons
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Jason Ayre
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: active_attr
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ none: false
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ none: false
28
+ prerelease: false
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ name: active_attr
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ none: false
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ none: false
44
+ prerelease: false
45
+ type: :runtime
46
+ - !ruby/object:Gem::Dependency
47
+ name: dcell
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '='
51
+ - !ruby/object:Gem::Version
52
+ version: 0.15.0
53
+ none: false
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - '='
57
+ - !ruby/object:Gem::Version
58
+ version: 0.15.0
59
+ none: false
60
+ prerelease: false
61
+ type: :runtime
62
+ - !ruby/object:Gem::Dependency
63
+ name: thor
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ none: false
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ none: false
76
+ prerelease: false
77
+ type: :runtime
78
+ - !ruby/object:Gem::Dependency
79
+ name: zk
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ none: false
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ none: false
92
+ prerelease: false
93
+ type: :runtime
94
+ - !ruby/object:Gem::Dependency
95
+ name: pry
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ none: false
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ none: false
108
+ prerelease: false
109
+ type: :runtime
110
+ - !ruby/object:Gem::Dependency
111
+ name: will_paginate
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ none: false
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ none: false
124
+ prerelease: false
125
+ type: :runtime
126
+ - !ruby/object:Gem::Dependency
127
+ name: ransack
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ none: false
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ none: false
140
+ prerelease: false
141
+ type: :runtime
142
+ - !ruby/object:Gem::Dependency
143
+ name: bundler
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ~>
147
+ - !ruby/object:Gem::Version
148
+ version: '1.3'
149
+ none: false
150
+ requirement: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ~>
153
+ - !ruby/object:Gem::Version
154
+ version: '1.3'
155
+ none: false
156
+ prerelease: false
157
+ type: :development
158
+ - !ruby/object:Gem::Dependency
159
+ name: rake
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ none: false
166
+ requirement: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - '>='
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ none: false
172
+ prerelease: false
173
+ type: :development
174
+ - !ruby/object:Gem::Dependency
175
+ name: pry
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ none: false
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - '>='
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ none: false
188
+ prerelease: false
189
+ type: :development
190
+ - !ruby/object:Gem::Dependency
191
+ name: activerecord
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - '>='
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ none: false
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - '>='
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ none: false
204
+ prerelease: false
205
+ type: :development
206
+ - !ruby/object:Gem::Dependency
207
+ name: rake
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - '>='
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ none: false
214
+ requirement: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - '>='
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ none: false
220
+ prerelease: false
221
+ type: :development
222
+ - !ruby/object:Gem::Dependency
223
+ name: rspec
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - '>='
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ none: false
230
+ requirement: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - '>='
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ none: false
236
+ prerelease: false
237
+ type: :development
238
+ - !ruby/object:Gem::Dependency
239
+ name: rspec-pride
240
+ version_requirements: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - '>='
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ none: false
246
+ requirement: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - '>='
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ none: false
252
+ prerelease: false
253
+ type: :development
254
+ - !ruby/object:Gem::Dependency
255
+ name: pry-nav
256
+ version_requirements: !ruby/object:Gem::Requirement
257
+ requirements:
258
+ - - '>='
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
261
+ none: false
262
+ requirement: !ruby/object:Gem::Requirement
263
+ requirements:
264
+ - - '>='
265
+ - !ruby/object:Gem::Version
266
+ version: '0'
267
+ none: false
268
+ prerelease: false
269
+ type: :development
270
+ - !ruby/object:Gem::Dependency
271
+ name: simplecov
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - '>='
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ none: false
278
+ requirement: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - '>='
281
+ - !ruby/object:Gem::Version
282
+ version: '0'
283
+ none: false
284
+ prerelease: false
285
+ type: :development
286
+ description: Collective intelligence meets service oriented architecture. Allows your remote models to act like your local models, while defining simple conventions to build self aware and reusable services. Currently reliant upon Zookeeper.
287
+ email:
288
+ - jasonayre@gmail.com
289
+ executables:
290
+ - cylons
291
+ extensions: []
292
+ extra_rdoc_files: []
293
+ files:
294
+ - .gitignore
295
+ - Gemfile
296
+ - LICENSE.txt
297
+ - README.md
298
+ - Rakefile
299
+ - bin/cylons
300
+ - cylons.gemspec
301
+ - lib/cylons.rb
302
+ - lib/cylons/active_record_extensions.rb
303
+ - lib/cylons/associations.rb
304
+ - lib/cylons/attributes.rb
305
+ - lib/cylons/configuration.rb
306
+ - lib/cylons/connection.rb
307
+ - lib/cylons/errors.rb
308
+ - lib/cylons/interface.rb
309
+ - lib/cylons/local_registry.rb
310
+ - lib/cylons/railtie.rb
311
+ - lib/cylons/registry_adapter.rb
312
+ - lib/cylons/remote.rb
313
+ - lib/cylons/remote_discovery.rb
314
+ - lib/cylons/remote_proxy.rb
315
+ - lib/cylons/remote_registry.rb
316
+ - lib/cylons/remote_schema.rb
317
+ - lib/cylons/rpc.rb
318
+ - lib/cylons/service.rb
319
+ - lib/cylons/service_manager.rb
320
+ - lib/cylons/version.rb
321
+ - spec/lib/cylons/registry_adapter_spec.rb
322
+ - spec/lib/cylons/remote_registry.rb
323
+ - spec/lib/cylons/service_manager_spec.rb
324
+ - spec/spec_helper.rb
325
+ homepage: https://github.com/jasonayre/cylons
326
+ licenses:
327
+ - MIT
328
+ post_install_message:
329
+ rdoc_options: []
330
+ require_paths:
331
+ - lib
332
+ required_ruby_version: !ruby/object:Gem::Requirement
333
+ requirements:
334
+ - - '>='
335
+ - !ruby/object:Gem::Version
336
+ segments:
337
+ - 0
338
+ hash: 2
339
+ version: '0'
340
+ none: false
341
+ required_rubygems_version: !ruby/object:Gem::Requirement
342
+ requirements:
343
+ - - '>='
344
+ - !ruby/object:Gem::Version
345
+ segments:
346
+ - 0
347
+ hash: 2
348
+ version: '0'
349
+ none: false
350
+ requirements: []
351
+ rubyforge_project:
352
+ rubygems_version: 1.8.24
353
+ signing_key:
354
+ specification_version: 3
355
+ summary: Collectively intelligent (and simple), Service Oriented Architecture framework for Rails
356
+ test_files:
357
+ - spec/lib/cylons/registry_adapter_spec.rb
358
+ - spec/lib/cylons/remote_registry.rb
359
+ - spec/lib/cylons/service_manager_spec.rb
360
+ - spec/spec_helper.rb