arkaan 0.6.2 → 0.6.3

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: 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: