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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f602925ee178d67614c4be296fd44ce8d8b62ef8
4
- data.tar.gz: 878ecdeee5f15f4a5cce617c11ff1356579f0753
3
+ metadata.gz: 398a52ed88f6a2b25b9fff85a438ee5de95cac77
4
+ data.tar.gz: db5180facb8db0e1e4a7db1c1957665bd7a7dd62
5
5
  SHA512:
6
- metadata.gz: cb37da6ef392bb5bac9860b262e08fd8fbaefc7cd920063d9e124247b578f031708c0c79e69414cb0ebaa799e7c2f9acfe0ab409b070d7c82c80f21ed55117d4
7
- data.tar.gz: 8ded5375888d16603f03c8033b562319bddf558940d39b9e398647f5a8b1f847786e239528dfda135f2e101922cb7de5b1c29b52ab644cd489ce3467916e75fa
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
- Dir[File.dirname(__FILE__) + '/microservice/**/*.rb'].each {|file| require file }
16
- Dir[File.dirname(__FILE__) + '/domain/**/*.rb'].each {|file| require 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 Sonopace::API::Status
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 = params[: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
- #main.rb
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 = 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
- say("visit #utter @freenode.net for direct support")
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 './../lib/generators/tips'
6
- require_relative './../lib/generators/container'
7
- require_relative './../lib/generators/microservice'
8
- require_relative './../lib/generators/domain'
9
- require_relative './../lib/generators/extension'
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
- project_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))
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 = "./#{project_name}::#{api_version}::#{service_name}"
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 => project_name, :ext_name => service_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.16"
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.16
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-05 00:00:00.000000000 Z
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