arkaan 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4fbb8f59c892ce91e7c016d76b3bd36a666a251c
4
- data.tar.gz: 1a185db4880c3d0986cd70b462c96e2f7eaf446e
3
+ metadata.gz: 8b55f4b19871258edaa210f4803de26d312ff87a
4
+ data.tar.gz: 385cdfa3c03601ea33e3c789cf68b418305c2d38
5
5
  SHA512:
6
- metadata.gz: 2cacca5e1e77eb380d2f8847281524ce5b70f87cd49d98a02dae68d2c8f98f44615157fbc36fb08d4ce7c3d2defed8123d20caadee44ea620c79c71c9c5e4c21
7
- data.tar.gz: e181c90141dd6a63d81be1ef2517e7a9f0e3bbdceef64877958a379957fee5a6e182ea630cfcf23c91cdc7f93287cd2ef313f9b48ebefabb1812696d04131555
6
+ metadata.gz: 044482743f1eb117fa8ca0001540c406702f3a6c4adb9f0b568b33b0ebb992f65a1bdeb5d4dacfd85fd60f43f3b1685a26c8377392a065af2f7d91f21d14f8a5
7
+ data.tar.gz: 4e302ff1f70e0bf36afd2e558244f2e5ca4f6e22b4532b47e9f2364be9cdca00243da68510d5a1f760e9889dd86bc64863e58a972ceb71565bc648a5af4d10d4
@@ -2,7 +2,7 @@ module Arkaan
2
2
  # Utility classes for the different micro-services of the suite.
3
3
  # @author Vincent Courtois <courtois.vincent@outlook.com>
4
4
  module Utils
5
- autoload :Controller, 'arkaan/utils/controller'
6
- autoload :Seeder , 'arkaan/utils/seeder'
5
+ autoload :Controller , 'arkaan/utils/controller'
6
+ autoload :MicroService, 'arkaan/utils/micro_service'
7
7
  end
8
8
  end
@@ -0,0 +1,59 @@
1
+ module Arkaan
2
+ module Utils
3
+ # The MicroService class is the loader for a micro service in general.
4
+ # @author Vincent Courtois <courtois.vincent@outlook.com>
5
+ class MicroService
6
+
7
+ # @!attribute [r] root
8
+ # @return [String] the root path of the application, from where each path is deduced.
9
+ attr_reader :root
10
+
11
+ attr_reader :name
12
+
13
+ # loads the application by requiring the files from the folders they're supposed to be in.
14
+ # @param name [String] the snake-cased name of the application, for service registration purpose mainly.
15
+ # @param root [String]
16
+ def initialize(name:, root:)
17
+ @root = root
18
+ @name = name
19
+ end
20
+
21
+ # Loads the necessary components for the application by requiring the needed files.
22
+ # @param test_mode [Boolean] TRUE if the application i supposed to be launched from the spec_helper, FALSE otherwise.
23
+ def load(test_mode: false)
24
+ self.require_mongoid_config(root)
25
+ self.require_folder(root, 'decorators')
26
+ self.require_folder(root, 'controllers')
27
+ if test_mode
28
+ self.require_folder(root, 'spec', 'support')
29
+ self.require_folder(root, 'spec', 'shared')
30
+ end
31
+ end
32
+
33
+ # Creates the service instance if necessary, and returns it.
34
+ # @return [Arkaan::Monitoring::Service] the service in the registry corresponding to this micro-service.
35
+ def registered_service
36
+ service = Arkaan::Monitoring::Service.where(key: @name).first
37
+ if service.nil?
38
+ service = Arkaan::Monitoring::Service.create!(key: @name, path: "/#{@name}", premium: true, active: true)
39
+ end
40
+ if service.instances.where(url: ENV['SERVICE_URL']).first.nil?
41
+ Arkaan::Monitoring::Instance.create!(url: ENV['SERVICE_URL'], running: true, service: service, active: true)
42
+ end
43
+ return service
44
+ end
45
+
46
+ # Require all the files from a folder iteratively by assembling the parts given as parameters.
47
+ # @param paths_elements [Array<String>] the elements to assemble to form the path of the folder.
48
+ def require_folder(*paths_elements)
49
+ File.join(path_elements, '**', '*.rb').each { |filename| block.call(filename) }
50
+ end
51
+
52
+ # Requires and loads the mongoid configuration from its default location.
53
+ # @param root [String] the root folder of the application from where require the configuration path;
54
+ def require_mongoid_config(root)
55
+ Mongoid.load!(File.join(root, 'config', 'mongoid.yml'))
56
+ end
57
+ end
58
+ end
59
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arkaan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Courtois
@@ -209,6 +209,7 @@ files:
209
209
  - lib/arkaan/permissions/right.rb
210
210
  - lib/arkaan/utils.rb
211
211
  - lib/arkaan/utils/controller.rb
212
+ - lib/arkaan/utils/micro_service.rb
212
213
  - lib/arkaan/utils/seeder.rb
213
214
  homepage: https://rubygems.org/gems/arkaan
214
215
  licenses: