upfluence-utils 0.6.1 → 0.7.2

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
  SHA256:
3
- metadata.gz: 3cf0103ec5ea88db6e92869554f2f061f7f95f6587b212e06af7163f7d39c877
4
- data.tar.gz: 81af3b8f8e2a21ba723111f9a168059ad3e6f16a628b59f36a62c41dd7d5eb39
3
+ metadata.gz: 43f3f95b490a3c99f889f669ee021b0507b3675375edcf9109e00da1c21ee3c4
4
+ data.tar.gz: 8283a5a34eee43ca112ac1c1855715d83fc234c0e0b42598cde0dcd5d25ca76b
5
5
  SHA512:
6
- metadata.gz: ac54b32db32e512e9f2ad857e794284653d2bcbfd1545275b9783d33ada9a7e55c3a7b1db4c3203bf9901b12f8ad0a7bb5b2844b2e6e663655a6bf427fc4a677
7
- data.tar.gz: f60a5082e72ae1600246264a2d329fe8240a6ce352410adf1f5e927ec0bbf2608299ae53a6b6f89571917142e617a6283183e2e24aa737936a15e5a7398af9ad
6
+ metadata.gz: c78a34273c1cf57982cf9de5f91ea0059352302ff19ba8df90c55bb99aa70cae56113ced7a7aa94a7ef8ddc58320b5f45d1cc03c944733ce888245fdfa7f6b9d
7
+ data.tar.gz: 9aaff54cd0bfa01aa26749fc6c5aff3a2d024b61ed64eddf57bc1104ad1e530e185ca066a4d38f4636e1ec99f4d952a9a70d5a3a8660e421e206cdada4bebce1
@@ -84,6 +84,10 @@ module Upfluence
84
84
  Sinatra::Base.not_found do
85
85
  [404, {}, { error: 'not_found' }.to_json]
86
86
  end
87
+
88
+ Sinatra::Base.error ActiveRecord::RecordInvalid do |e|
89
+ [422, Base::Exceptions::ValidationError.from_model(e.record).to_json]
90
+ end
87
91
  end
88
92
  end
89
93
  end
@@ -0,0 +1,30 @@
1
+ module Upfluence
2
+ class Peer
3
+ attr_reader :environment, :authority, :instance_name, :project_name,
4
+ :app_name
5
+
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'
12
+ end
13
+
14
+ def to_url
15
+ "peer://#{@environment}@#{@authority}/#{@instance_name}"
16
+ end
17
+
18
+ class << self
19
+ def from_env
20
+ Peer.new(
21
+ authority: ENV['AUTHORITY'],
22
+ instance_name: ENV['INSTANCE_NAME'],
23
+ app_name: ENV['APP_NAME'],
24
+ project_name: ENV['PROJECT_NAME'],
25
+ environment: ENV['ENV']
26
+ )
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,5 +1,6 @@
1
1
  require 'upfluence/utils/version'
2
2
  require 'upfluence/utils/thrift'
3
+ require 'upfluence/utils/semaphore'
3
4
  require 'upfluence/logger'
4
5
  require 'upfluence/error_logger'
5
6
  require 'upfluence/environment'
@@ -0,0 +1,38 @@
1
+ module Upfluence
2
+ module Utils
3
+ class Semaphore
4
+ def initialize(size)
5
+ @size = size
6
+ @used = 0
7
+ @mutex = Mutex.new
8
+ @cond = ConditionVariable.new
9
+ end
10
+
11
+ def acquire(count = 1)
12
+ @mutex.synchronize do
13
+ loop do
14
+ break if @used + count <= @size
15
+
16
+ @cond.wait(@mutex)
17
+ end
18
+
19
+ @used += count
20
+ end
21
+ end
22
+
23
+ def release(count = 1)
24
+ @mutex.synchronize do
25
+ @used -= count
26
+ @cond.broadcast
27
+ end
28
+ end
29
+
30
+ def synchronize(count = 1, &block)
31
+ acquire(count)
32
+ block.call
33
+ ensure
34
+ release(count)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.6.1'.freeze
3
+ VERSION = '0.7.2'.freeze
4
4
  end
5
5
  end
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.add_development_dependency "bundler", "~> 1.12"
20
20
  spec.add_development_dependency "rake", "~> 10.0"
21
21
  spec.add_development_dependency "rspec", "~> 3.0"
22
- spec.add_runtime_dependency 'upfluence-thrift', '~> 1.0', '>= 1.0.3'
22
+ spec.add_runtime_dependency 'upfluence-thrift', '~> 2.1'
23
23
  spec.add_runtime_dependency 'base-thrift', '>= 0.1.0'
24
24
  spec.add_runtime_dependency 'sinatra'
25
25
  spec.add_runtime_dependency 'redis'
@@ -29,6 +29,6 @@ Gem::Specification.new do |spec|
29
29
  spec.add_runtime_dependency 'puma'
30
30
  spec.add_runtime_dependency 'rack'
31
31
  spec.add_runtime_dependency 'stackprof'
32
- spec.add_runtime_dependency 'prometheus-client'
32
+ spec.add_runtime_dependency 'prometheus-client', '~> 0.9.0'
33
33
  spec.add_runtime_dependency 'userializer'
34
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upfluence-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-18 00:00:00.000000000 Z
11
+ date: 2020-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,20 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 1.0.3
61
+ version: '2.1'
65
62
  type: :runtime
66
63
  prerelease: false
67
64
  version_requirements: !ruby/object:Gem::Requirement
68
65
  requirements:
69
66
  - - "~>"
70
67
  - !ruby/object:Gem::Version
71
- version: '1.0'
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 1.0.3
68
+ version: '2.1'
75
69
  - !ruby/object:Gem::Dependency
76
70
  name: base-thrift
77
71
  requirement: !ruby/object:Gem::Requirement
@@ -202,16 +196,16 @@ dependencies:
202
196
  name: prometheus-client
203
197
  requirement: !ruby/object:Gem::Requirement
204
198
  requirements:
205
- - - ">="
199
+ - - "~>"
206
200
  - !ruby/object:Gem::Version
207
- version: '0'
201
+ version: 0.9.0
208
202
  type: :runtime
209
203
  prerelease: false
210
204
  version_requirements: !ruby/object:Gem::Requirement
211
205
  requirements:
212
- - - ">="
206
+ - - "~>"
213
207
  - !ruby/object:Gem::Version
214
- version: '0'
208
+ version: 0.9.0
215
209
  - !ruby/object:Gem::Dependency
216
210
  name: userializer
217
211
  requirement: !ruby/object:Gem::Requirement
@@ -262,9 +256,11 @@ files:
262
256
  - lib/upfluence/logger.rb
263
257
  - lib/upfluence/mixin/pagination.rb
264
258
  - lib/upfluence/mixin/strong_parameters.rb
259
+ - lib/upfluence/peer.rb
265
260
  - lib/upfluence/pool.rb
266
261
  - lib/upfluence/utils.rb
267
262
  - lib/upfluence/utils/http/middleware/null.rb
263
+ - lib/upfluence/utils/semaphore.rb
268
264
  - lib/upfluence/utils/thrift.rb
269
265
  - lib/upfluence/utils/thrift/middleware.rb
270
266
  - lib/upfluence/utils/thrift/middleware/active_record.rb