upfluence-utils 0.10.3 → 0.11.1

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
  SHA256:
3
- metadata.gz: 7224bbbf6f3f8148ab29757de71e78d20150d0ec1723ebd783495ef75eee42d3
4
- data.tar.gz: 6521d96e7d1379e19f3a9d5d6e2dc73d657fb5aa2717b4656f4baa03aa09e3e4
3
+ metadata.gz: 34482caf62162c18d2dd1baccb5a6779d6842ada6fe2bd9ea93cb59f4a5dd023
4
+ data.tar.gz: 11d5ee4d37890bce173e6504c68717eb84b02b83e08dc7b49922876cea8b1be1
5
5
  SHA512:
6
- metadata.gz: '0742070824a9cb9ce9812484e99e1bc2fc741da8de26fee3229ecebeecc4fc8833e0d9fa25243b58898c9e5b5e91521c7c4b226e937b42c49d22f79eaca68599'
7
- data.tar.gz: 997855dfb5c929120397e603a640b253b87444e72c961c006aa1341a88df4adf529e583e2516b51e156950b419879032486bf96b5f8f3008f366c60cf0f76871
6
+ metadata.gz: 5783891f47a807fb2e330666f95e613959551c35f515988b3c565a9cb29f81b720adcb2bc2f80e1657e90d789d244546bcb05fb9157d1f17f85e94aab054c377
7
+ data.tar.gz: 6cc44d846140cbc7b5066d778ebce30944532c9b3e082ccbbb433741cc5ccacd945a5263fa29c94acb6a47f90a58e8a052888b9a7d6f7cfce7c9c6a69bc8fd97
@@ -78,7 +78,7 @@ module Upfluence
78
78
 
79
79
  Thread.new { run_prometheus_exporter } if @options[:push_gateway_url]
80
80
 
81
- @handler.run(@builder, @options) do |server|
81
+ @handler.run(@builder, **@options) do |server|
82
82
  server.threaded = @options[:threaded] if server.respond_to? :threaded=
83
83
 
84
84
  if server.respond_to?(:threadpool_size=) && @options[:threadpool_size]
@@ -1,28 +1,126 @@
1
+ require 'cgi'
2
+
1
3
  module Upfluence
2
4
  class Peer
5
+ class Version
6
+ class SemanticVersion
7
+ attr_reader :major, :minor, :patch, :suffix
8
+
9
+ def initialize(major:, minor:, patch:, suffix: nil)
10
+ @major = major
11
+ @minor = minor
12
+ @patch = patch
13
+ @suffix = suffix
14
+ end
15
+
16
+ def to_s
17
+ v = "v#{@major}.#{@minor}.#{@patch}"
18
+
19
+ v += "-#{@suffix}" if @suffix
20
+ v
21
+ end
22
+
23
+ class << self
24
+ def parse(version)
25
+ return nil unless version
26
+
27
+ v, suffix = version.split('-', 2)
28
+
29
+ vs = v.split('.')
30
+
31
+ return nil unless vs.count.eql? 3
32
+
33
+ SemanticVersion.new(
34
+ major: vs[0].delete_prefix('v').to_i,
35
+ minor: vs[1].to_i,
36
+ patch: vs[2].to_i,
37
+ suffix: suffix
38
+ )
39
+ end
40
+ end
41
+ end
42
+
43
+ class GitVersion
44
+ attr_reader :commit, :remote, :branch
45
+
46
+ def initialize(commit:, remote: nil, branch: nil)
47
+ @commit = commit
48
+ @remote = remote
49
+ @branch = branch
50
+ end
51
+
52
+ def to_s
53
+ "v0.0.0+git-#{@commit[0..6]}"
54
+ end
55
+ end
56
+
57
+ DEFAULT_VERSION = 'v0.0.0-dirty'.freeze
58
+
59
+ attr_reader :git, :semantic
60
+
61
+ def initialize(git, semantic)
62
+ @git = git
63
+ @semantic = semantic
64
+ end
65
+
66
+ def to_s
67
+ return @semantic.to_s if @semantic
68
+ return @git.to_s if @git
69
+
70
+ DEFAULT_VERSION
71
+ end
72
+ end
73
+
3
74
  attr_reader :environment, :authority, :instance_name, :project_name,
4
75
  :app_name
5
76
 
6
- def initialize(opts = {})
7
- @authority = opts[:authority] || 'local'
8
- @instance_name = opts[:instance_name] || 'unknown-server'
9
- @app_name = opts[:app_name] || 'unknown-name'
10
- @project_name = opts[:project_name] || 'unknown-app'
11
- @environment = opts[:environment] || 'development'
77
+ def initialize(authority:, instance_name:, app_name:, project_name:,
78
+ environment:, version: nil)
79
+ @authority = authority || 'local'
80
+ @instance_name = instance_name || 'unknown-server'
81
+ @app_name = app_name || 'unknown-app'
82
+ @project_name = project_name || 'unknown-app'
83
+ @environment = environment || 'development'
84
+ @version = version
12
85
  end
13
86
 
14
87
  def to_url
15
- "peer://#{@environment}@#{@authority}/#{@instance_name}"
88
+ query = {
89
+ 'app-name' => @app_name,
90
+ 'project-name' => @project_name,
91
+ 'git-version' => @version.git&.commit,
92
+ 'semantic-version' => @version.semantic&.to_s
93
+ }.compact.map { |k, v| "#{k}=#{CGI.escape(v)}" }.join('&')
94
+
95
+ "peer://#{@environment}@#{@authority}/#{@instance_name}?#{query}"
16
96
  end
17
97
 
18
98
  class << self
19
99
  def from_env
20
100
  Peer.new(
21
101
  authority: ENV['AUTHORITY'],
22
- instance_name: ENV['INSTANCE_NAME'],
102
+ instance_name: ENV['UNIT_NAME'],
23
103
  app_name: ENV['APP_NAME'],
24
104
  project_name: ENV['PROJECT_NAME'],
25
- environment: ENV['ENV']
105
+ environment: ENV['ENV'],
106
+ version: Version.new(
107
+ build_git_version,
108
+ Version::SemanticVersion.parse(ENV['VERSION'])
109
+ )
110
+ )
111
+ end
112
+
113
+ private
114
+
115
+ def build_git_version
116
+ commit = ENV['GIT_COMMIT']
117
+
118
+ return nil unless commit
119
+
120
+ Version::GitVersion.new(
121
+ commit: commit,
122
+ remote: ENV['GIT_REMOTE'],
123
+ branch: ENV['GIT_BRANCH']
26
124
  )
27
125
  end
28
126
  end
@@ -17,7 +17,7 @@ module Upfluence
17
17
  def method_missing(method, *args, &block)
18
18
  @app.send(method, *args, &block)
19
19
  rescue ::Thrift::Exception => e
20
- if STANDARD_THRIFT_EXCEPTIONS.include? exc.class
20
+ if STANDARD_THRIFT_EXCEPTIONS.include? e.class
21
21
  @error_logger.notify(e, method, *args)
22
22
  end
23
23
 
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.10.3'.freeze
3
+ VERSION = '0.11.1'.freeze
4
4
  end
5
5
  end
data/rbutils.gemspec CHANGED
@@ -15,10 +15,11 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
17
  spec.require_paths = ["lib"]
18
+ spec.required_ruby_version = '>= 2.7.0'
18
19
 
19
- spec.add_development_dependency "bundler", "~> 1.12"
20
- spec.add_development_dependency "rake", ">= 12.3.3"
21
- spec.add_development_dependency "rspec", "~> 3.0"
20
+ spec.add_development_dependency "bundler", ">= 2.2"
21
+ spec.add_development_dependency "rake", ">= 13.0.0"
22
+ spec.add_development_dependency "rspec", ">= 3.10"
22
23
  spec.add_runtime_dependency 'upfluence-thrift'
23
24
  spec.add_runtime_dependency 'sinatra'
24
25
  spec.add_runtime_dependency 'redis'
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upfluence-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.3
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-09 00:00:00.000000000 Z
11
+ date: 2022-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.12'
19
+ version: '2.2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.12'
26
+ version: '2.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 12.3.3
33
+ version: 13.0.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 12.3.3
40
+ version: 13.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '3.10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '3.10'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: upfluence-thrift
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -300,14 +300,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
300
300
  requirements:
301
301
  - - ">="
302
302
  - !ruby/object:Gem::Version
303
- version: '0'
303
+ version: 2.7.0
304
304
  required_rubygems_version: !ruby/object:Gem::Requirement
305
305
  requirements:
306
306
  - - ">="
307
307
  - !ruby/object:Gem::Version
308
308
  version: '0'
309
309
  requirements: []
310
- rubygems_version: 3.0.3
310
+ rubygems_version: 3.2.32
311
311
  signing_key:
312
312
  specification_version: 4
313
313
  summary: Upfluence common utils for Ruby projects