utter 1.0.16 → 1.0.17
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/README.md +5 -1
- data/{lib → bin}/generators/container.rb +7 -3
- data/{lib → bin}/generators/microservice.rb +21 -2
- data/{lib → bin}/generators/tips.rb +7 -4
- data/bin/utter +17 -11
- data/lib/utter.rb +2 -1
- metadata +7 -7
- /data/{lib → bin}/generators/domain.rb +0 -0
- /data/{lib → bin}/generators/extension.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 398a52ed88f6a2b25b9fff85a438ee5de95cac77
|
4
|
+
data.tar.gz: db5180facb8db0e1e4a7db1c1957665bd7a7dd62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da4e45f8a6050d4fe9f11085b2f7d99ae49aa69db335e7f3f902652f9842e9bded4b19ff10b68c84ae63b2d0f48da9af63a458f5aae89b64be0a0328b79f6742
|
7
|
+
data.tar.gz: a7116ac6c01dfc5d80906d53166ca80e3601acd01406ddd662471bf0126d8bc1260026841cb6209e429051bc2ba71048046fa98051c3a128c728ddcb95f05c60
|
data/README.md
CHANGED
@@ -4,10 +4,14 @@ Utter is a Domain-specific Microservices Framework written in Ruby for building
|
|
4
4
|
|
5
5
|
irc: #utter@freenode.net
|
6
6
|
|
7
|
+
FAQ: Why Utter Services can NOT talk to each other?
|
8
|
+
================================================
|
9
|
+
Utter services are designed to be part of your versioned API, each service handles its own logging and provides its own monitoring mechanism.
|
10
|
+
if you found yourself needing to stack\interface to each others then the Utter suggestion is to revise your architecutral design, as this is where the problem should be addressed and solved, inorder to keep your implmentation "fuck'n Simple", that is the utter way for doing microservices.
|
11
|
+
|
7
12
|
What is a Domain-specific Microservice?
|
8
13
|
========================================
|
9
14
|
|
10
|
-
|
11
15
|
A domain is an area of knowledge such as an industry field or a subject of interest.
|
12
16
|
Building an application often requires the utilization of knowledge from a number of different domains.
|
13
17
|
Designing your "Application" on the premise that any authorized entity can utilize the knowledge of a specific domain via interacting with a domain-specific microservice that can do two things, consume messeges and produce messeges.
|
@@ -9,13 +9,17 @@ module Utter
|
|
9
9
|
desc 'Generate an utter project skleton'
|
10
10
|
def create_container params={}
|
11
11
|
path = params[:path]
|
12
|
+
module_name = params[:module_name]
|
13
|
+
api_version = params[:api_version]
|
14
|
+
service_name = params[:service_name]
|
12
15
|
|
13
16
|
# config.ru
|
14
17
|
@file = <<-FOO
|
15
|
-
|
16
|
-
Dir[File.dirname(__FILE__) + '/
|
18
|
+
require 'utter'
|
19
|
+
Dir[File.dirname(__FILE__) + '/microservice/**/*.rb'].each {|file| require_relative file }
|
20
|
+
Dir[File.dirname(__FILE__) + '/domain/**/*.rb'].each {|file| require_relative file }
|
17
21
|
map "/" do
|
18
|
-
run
|
22
|
+
run #{module_name.capitalize}::#{api_version.capitalize}::#{service_name.capitalize}
|
19
23
|
end
|
20
24
|
FOO
|
21
25
|
create_file "#{path}/config.ru"
|
@@ -12,14 +12,33 @@ module Utter
|
|
12
12
|
|
13
13
|
desc 'Generate an utter microservice directory structure'
|
14
14
|
def create_microservice params={}
|
15
|
-
path
|
15
|
+
path = params[:path]
|
16
|
+
module_name = params[:module_name]
|
17
|
+
api_version = params[:api_version]
|
18
|
+
service_name = params[:service_name]
|
19
|
+
|
16
20
|
empty_directory "#{path}/microservice"
|
17
21
|
empty_directory "#{path}/microservice/lib"
|
18
22
|
empty_directory "#{path}/microservice/lib/internals"
|
19
23
|
# microservice/lib/main.rb
|
20
24
|
create_file "#{path}/microservice/lib/main.rb"
|
21
25
|
@file = <<-FOO
|
22
|
-
|
26
|
+
require 'json'
|
27
|
+
module #{module_name.capitalize}
|
28
|
+
module #{api_version.capitalize}
|
29
|
+
class #{service_name.capitalize} < Utter::Microservice
|
30
|
+
\$log.info("mounting \#{self}")
|
31
|
+
get '/' do
|
32
|
+
domain_stack = Utter::Stack.new do
|
33
|
+
#use MyDomainExtension, "data message"
|
34
|
+
end
|
35
|
+
\$log.info(domain_stack.to_s)
|
36
|
+
{"status": "running"}.to_json
|
37
|
+
end
|
38
|
+
#run! if app_file == $0
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
23
42
|
FOO
|
24
43
|
append_to_file "#{path}/microservice/lib/main.rb", @file
|
25
44
|
|
@@ -144,10 +144,13 @@ module Utter
|
|
144
144
|
|
145
145
|
when :utter_banner
|
146
146
|
extend Thor::Shell
|
147
|
-
utter_title
|
148
|
-
utter_version
|
149
|
-
say(utter_title + utter_version )
|
150
|
-
|
147
|
+
utter_title = set_color(" Utter ", :red, :on_white, :bold)
|
148
|
+
utter_version = set_color(Utter::VERSION + " | ", :black, :on_white, :bold)
|
149
|
+
#say(utter_title + utter_version )
|
150
|
+
|
151
|
+
irc = set_color("", :green, :on_white, :bold)
|
152
|
+
irc_url = set_color("#utter @freenode.net" + " ", :green, :on_white, :bold)
|
153
|
+
say(utter_title + utter_version + irc + irc_url)
|
151
154
|
|
152
155
|
return # back to the calling routine
|
153
156
|
|
data/bin/utter
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
require "thor"
|
4
4
|
require_relative './../lib/utter'
|
5
|
-
require_relative '
|
6
|
-
require_relative '
|
7
|
-
require_relative '
|
8
|
-
require_relative '
|
9
|
-
require_relative '
|
5
|
+
require_relative './generators/tips'
|
6
|
+
require_relative './generators/container'
|
7
|
+
require_relative './generators/microservice'
|
8
|
+
require_relative './generators/domain'
|
9
|
+
require_relative './generators/extension'
|
10
10
|
|
11
11
|
module Utter
|
12
12
|
#This directory contains common microservice templates
|
@@ -50,17 +50,17 @@ module Utter
|
|
50
50
|
message = " e.g. api.github.com/v1/repos "
|
51
51
|
puts (info + message)
|
52
52
|
|
53
|
-
|
54
|
-
api_version
|
55
|
-
service_name
|
56
|
-
#domain_name
|
53
|
+
module_name = ask(set_color("Organization/Project Name, e.g. 'github': ", :bold)).downcase
|
54
|
+
api_version = ask(set_color("API Version, e.g. 'v1': ",:bold)).downcase
|
55
|
+
service_name = ask(set_color("Microservice Name, e.g. 'repos': ", :bold)).downcase
|
56
|
+
#domain_name = ask(set_color("Domain Name, e.g. 'scm': ", :bold))
|
57
57
|
|
58
58
|
seprator
|
59
59
|
|
60
|
-
path = "./#{
|
60
|
+
path = "./#{module_name}::#{api_version}::#{service_name}"
|
61
61
|
|
62
62
|
#params = {:path => path, :module_name => project_name, :ext_name => service_name, :domain_name => domain_name}
|
63
|
-
params = {:path => path, :module_name =>
|
63
|
+
params = {:path => path, :module_name => module_name, :api_version => api_version, :service_name => service_name}
|
64
64
|
|
65
65
|
|
66
66
|
# Dockerfile
|
@@ -116,8 +116,14 @@ module Utter
|
|
116
116
|
#print_table choices
|
117
117
|
#selection = ask("Answer:", :green).to_i
|
118
118
|
#p selection
|
119
|
+
=begin NOTE This should be AVOIDED, as by design services should be constrained from talking to each other, as they together form an API, and only a consumer talk to the API. In other words each service must have its own logging and monitoring mechanism. Once again Sinatra comes handy here.
|
120
|
+
when "monitor"
|
121
|
+
#TODO Generates an utter monitoring microservice
|
122
|
+
when "logging"
|
123
|
+
#TODO Generates an utter logging microservice
|
119
124
|
when "consumer"
|
120
125
|
#TODO Generates an utter consumer domain extension to talk to other services in your domain/lib/ directory
|
126
|
+
=end
|
121
127
|
when "sdk"
|
122
128
|
#TODO generates an sdk library directory structure e.g. gitlapse SDK
|
123
129
|
else
|
data/lib/utter.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'logger'
|
2
2
|
require 'mushin'
|
3
|
+
#require 'json' #TODO need to make all responses json based by default if it is a hash and raise an error if it is not a hash!!
|
3
4
|
|
4
5
|
#require_relative "internals/core/store"
|
5
6
|
#require_relative "internals/core/auth"
|
@@ -16,7 +17,7 @@ module Utter
|
|
16
17
|
# MAJOR version when you make incompatible API changes,
|
17
18
|
# MINOR version when you add functionality in a backwards-compatible manner, and
|
18
19
|
# PATCH version when you make backwards-compatible bug fixes.
|
19
|
-
VERSION = "1.0.
|
20
|
+
VERSION = "1.0.17"
|
20
21
|
|
21
22
|
$log = Logger.new(STDOUT)
|
22
23
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: utter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zotherstupidguy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -334,13 +334,13 @@ files:
|
|
334
334
|
- README.md
|
335
335
|
- Rakefile
|
336
336
|
- bin/console
|
337
|
+
- bin/generators/container.rb
|
338
|
+
- bin/generators/domain.rb
|
339
|
+
- bin/generators/extension.rb
|
340
|
+
- bin/generators/microservice.rb
|
341
|
+
- bin/generators/tips.rb
|
337
342
|
- bin/setup
|
338
343
|
- bin/utter
|
339
|
-
- lib/generators/container.rb
|
340
|
-
- lib/generators/domain.rb
|
341
|
-
- lib/generators/extension.rb
|
342
|
-
- lib/generators/microservice.rb
|
343
|
-
- lib/generators/tips.rb
|
344
344
|
- lib/internals/core/auth.rb
|
345
345
|
- lib/internals/core/microservice.rb
|
346
346
|
- lib/internals/core/service_discovery.rb
|
File without changes
|
File without changes
|