rubypitaya 3.4.2 → 3.5.0
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/lib/rubypitaya/app-template/Gemfile +1 -1
- data/lib/rubypitaya/app-template/Gemfile.lock +2 -2
- data/lib/rubypitaya/app-template/Makefile +6 -0
- data/lib/rubypitaya/app-template/app/app_initializer.rb +13 -3
- data/lib/rubypitaya/app-template/app/handlers/error_handler.rb +18 -0
- data/lib/rubypitaya/app-template/app/handlers/player_handler.rb +0 -3
- data/lib/rubypitaya/core/handler_base.rb +4 -4
- data/lib/rubypitaya/core/handler_router.rb +3 -3
- data/lib/rubypitaya/core/http_routes.rb +1 -1
- data/lib/rubypitaya/core/initializer_content.rb +3 -3
- data/lib/rubypitaya/core/main.rb +21 -11
- data/lib/rubypitaya/core/{redis_connector.rb → redis_service.rb} +16 -3
- data/lib/rubypitaya/core/service_base.rb +21 -0
- data/lib/rubypitaya/core/service_holder.rb +32 -0
- data/lib/rubypitaya/core/spec-helpers/handler_spec_helper.rb +6 -19
- data/lib/rubypitaya/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bea764ce3cb4595677dc5ff2b0af555d0fa0db47500e0ae28a4431275ff0b3d0
|
4
|
+
data.tar.gz: b4d3ac9a4b66605396f1fd27fb83618e8897f5284e6fc9b97426b0ece545ef10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38152d121b929079ba9315832bfac315771bb640c7cabbd7c66fdd286662706c54f9a0412d575bc2024e3aa929aae950c679c6189969ecfe454e41d333e38fb7
|
7
|
+
data.tar.gz: c3b9b060a58f659a32fbff7baa950eade738672d426e1aaadb295df58bed56cbd5ddde2b09f1ce3a8caca47c4b1ce85e086b10598798c858fb45fdc0483604cb
|
@@ -99,7 +99,7 @@ GEM
|
|
99
99
|
rspec-support (~> 3.11.0)
|
100
100
|
rspec-support (3.11.0)
|
101
101
|
ruby2_keywords (0.0.5)
|
102
|
-
rubypitaya (3.
|
102
|
+
rubypitaya (3.5.0)
|
103
103
|
activerecord (= 7.0.2)
|
104
104
|
etcdv3 (= 0.11.5)
|
105
105
|
google-protobuf (= 3.19.4)
|
@@ -138,7 +138,7 @@ DEPENDENCIES
|
|
138
138
|
listen (= 3.7.1)
|
139
139
|
pry (= 0.14.1)
|
140
140
|
rspec (= 3.11.0)
|
141
|
-
rubypitaya (= 3.
|
141
|
+
rubypitaya (= 3.5.0)
|
142
142
|
sinatra-contrib (= 2.1.0)
|
143
143
|
|
144
144
|
BUNDLED WITH
|
@@ -99,6 +99,12 @@ prod-push-image:
|
|
99
99
|
prod-deploy-image:
|
100
100
|
kubectl --context='$(KUBECONTEXT)' -n $(KUBE_NAMESPACE) set image deployment $(KUBE_DEPLOYMENT_SERVER) $(KUBE_DEPLOYMENT_SERVER)=$(IMAGE_REGISTRY):$(IMAGE_TAG)
|
101
101
|
|
102
|
+
## + Other Commands
|
103
|
+
|
104
|
+
## Clear docker containers and volumes
|
105
|
+
clear:
|
106
|
+
@docker rm -f $$(docker ps -aq) ; docker volume rm -f $$(docker volume ls)
|
107
|
+
|
102
108
|
.DEFAULT_GOAL := show-help
|
103
109
|
|
104
110
|
.PHONY: show-help
|
@@ -1,10 +1,12 @@
|
|
1
|
+
require 'rubypitaya/core/redis_service'
|
2
|
+
|
1
3
|
class AppInitializer < RubyPitaya::InitializerBase
|
2
4
|
|
3
5
|
# method: run
|
4
6
|
# parameter: initializer_content
|
5
7
|
# attributes:
|
6
|
-
# -
|
7
|
-
# - link: https://
|
8
|
+
# - services
|
9
|
+
# - link: https://gitlab.com/LucianoPC/ruby-pitaya/-/blob/master/lib/rubypitaya/core/service_holder.rb
|
8
10
|
#
|
9
11
|
# - mongo
|
10
12
|
# - class: Mongo::Client
|
@@ -29,9 +31,17 @@ class AppInitializer < RubyPitaya::InitializerBase
|
|
29
31
|
# - info
|
30
32
|
# - log information
|
31
33
|
|
34
|
+
# services:
|
35
|
+
# - redis
|
36
|
+
# - link: https://github.com/redis/redis-rb/
|
37
|
+
|
32
38
|
def run(initializer_content)
|
33
|
-
|
39
|
+
setup = initializer_content.setup
|
40
|
+
services = initializer_content.services
|
34
41
|
|
42
|
+
services.add(:redis, RubyPitaya::RedisService.new(setup))
|
43
|
+
|
44
|
+
playerBll = PlayerBLL.new
|
35
45
|
PlayerHandler.objects.add(:bll, playerBll)
|
36
46
|
end
|
37
47
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class ErrorHandler < RubyPitaya::HandlerBase
|
2
|
+
|
3
|
+
non_authenticated_actions :getError
|
4
|
+
|
5
|
+
def getError
|
6
|
+
error_code = RubyPitaya::StatusCodes::CODE_ERROR
|
7
|
+
error_message = "Some Error"
|
8
|
+
|
9
|
+
raise RubyPitaya::RouteError.new(error_code, error_message)
|
10
|
+
|
11
|
+
response = {
|
12
|
+
code: 'RP-200',
|
13
|
+
data: {
|
14
|
+
message: 'Ok!'
|
15
|
+
}
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
@@ -8,9 +8,6 @@ class PlayerHandler < RubyPitaya::HandlerBase
|
|
8
8
|
# - [](key)
|
9
9
|
# - info: get object by key
|
10
10
|
#
|
11
|
-
# - @redis
|
12
|
-
# - link: https://github.com/redis/redis-rb/
|
13
|
-
#
|
14
11
|
# - @mongo
|
15
12
|
# - class: Mongo::Client
|
16
13
|
# - link: https://docs.mongodb.com/ruby-driver/current/tutorials/quick-start/
|
@@ -7,11 +7,11 @@ module RubyPitaya
|
|
7
7
|
class_attribute :non_authenticated_routes, default: []
|
8
8
|
class_attribute :handler_objects, default: nil, instance_reader: false, instance_writer: false, instance_accessor: false, instance_predicate: false
|
9
9
|
|
10
|
-
attr_reader :objects, :log, :
|
10
|
+
attr_reader :objects, :log, :services, :setup, :config, :params, :session, :postman
|
11
11
|
|
12
12
|
def initialize
|
13
13
|
@log = nil
|
14
|
-
@
|
14
|
+
@services = nil
|
15
15
|
@setup = nil
|
16
16
|
@config = nil
|
17
17
|
@params = nil
|
@@ -21,9 +21,9 @@ module RubyPitaya
|
|
21
21
|
@objects = self.class.objects
|
22
22
|
end
|
23
23
|
|
24
|
-
def set_attributes(log,
|
24
|
+
def set_attributes(log, services, mongo, setup, config, params, session, postman)
|
25
25
|
@log = log
|
26
|
-
@
|
26
|
+
@services = services
|
27
27
|
@mongo = mongo
|
28
28
|
@setup = setup
|
29
29
|
@config = config
|
@@ -64,7 +64,7 @@ module RubyPitaya
|
|
64
64
|
@handler_name_map = @handler_name_map.to_h
|
65
65
|
end
|
66
66
|
|
67
|
-
def call(handler_name, action_name, session, postman,
|
67
|
+
def call(handler_name, action_name, session, postman, services, mongo, setup,
|
68
68
|
config, log, params)
|
69
69
|
unless @handler_name_map.include?(handler_name)
|
70
70
|
return {
|
@@ -83,11 +83,11 @@ module RubyPitaya
|
|
83
83
|
handler = @handler_name_map[handler_name]
|
84
84
|
|
85
85
|
if !handler.class.authenticated_action_name?(action_name)
|
86
|
-
handler.set_attributes(log,
|
86
|
+
handler.set_attributes(log, services, mongo, setup, config, params, session, postman)
|
87
87
|
handler.send(action_name)
|
88
88
|
else
|
89
89
|
if session.authenticated?
|
90
|
-
handler.set_attributes(log,
|
90
|
+
handler.set_attributes(log, services, mongo, setup, config, params, session, postman)
|
91
91
|
handler.send(action_name)
|
92
92
|
else
|
93
93
|
return {
|
@@ -2,12 +2,12 @@ module RubyPitaya
|
|
2
2
|
|
3
3
|
class InitializerContent
|
4
4
|
|
5
|
-
attr_reader :log, :
|
5
|
+
attr_reader :log, :services, :mongo, :setup, :config
|
6
6
|
|
7
|
-
def initialize(log,
|
7
|
+
def initialize(log, services, mongo, setup, config)
|
8
8
|
@log = log
|
9
|
+
@services = services
|
9
10
|
@mongo = mongo
|
10
|
-
@redis = redis
|
11
11
|
@setup = setup
|
12
12
|
@config = config
|
13
13
|
end
|
data/lib/rubypitaya/core/main.rb
CHANGED
@@ -13,13 +13,13 @@ require 'rubypitaya/core/http_routes'
|
|
13
13
|
require 'rubypitaya/core/route_error'
|
14
14
|
require 'rubypitaya/core/routes_base'
|
15
15
|
require 'rubypitaya/core/status_codes'
|
16
|
-
require 'rubypitaya/core/handler_router'
|
17
16
|
require 'rubypitaya/core/etcd_connector'
|
17
|
+
require 'rubypitaya/core/handler_router'
|
18
18
|
require 'rubypitaya/core/nats_connector'
|
19
|
+
require 'rubypitaya/core/service_holder'
|
19
20
|
require 'rubypitaya/core/database_config'
|
20
21
|
require 'rubypitaya/core/instance_holder'
|
21
22
|
require 'rubypitaya/core/mongo_connector'
|
22
|
-
require 'rubypitaya/core/redis_connector'
|
23
23
|
require 'rubypitaya/core/database_connector'
|
24
24
|
require 'rubypitaya/core/initializer_content'
|
25
25
|
require 'rubypitaya/core/initializer_broadcast'
|
@@ -64,10 +64,6 @@ module RubyPitaya
|
|
64
64
|
@nats_connector = NatsConnector.new(@nats_address, @service_uuid,
|
65
65
|
@server_name)
|
66
66
|
|
67
|
-
@redis_address = @setup['rubypitaya.redis.url']
|
68
|
-
@redis_connector = RedisConnector.new(@redis_address)
|
69
|
-
@redis_connector.connect
|
70
|
-
|
71
67
|
@database_config = DatabaseConfig.new
|
72
68
|
@database_connector = DatabaseConnector.new(@database_config, @log)
|
73
69
|
@database_connector.connect
|
@@ -86,10 +82,12 @@ module RubyPitaya
|
|
86
82
|
@config = Config.new
|
87
83
|
@config.auto_reload if @is_development_environment
|
88
84
|
|
85
|
+
@services = ServiceHolder.new
|
86
|
+
|
89
87
|
@objects = InstanceHolder.new
|
90
88
|
|
91
89
|
@initializer_content = InitializerContent.new(@log,
|
92
|
-
@
|
90
|
+
@services,
|
93
91
|
@mongo_connector.mongo,
|
94
92
|
@setup,
|
95
93
|
@config)
|
@@ -98,15 +96,25 @@ module RubyPitaya
|
|
98
96
|
|
99
97
|
@handler_router = HandlerRouter.new(@is_cheats_enabled)
|
100
98
|
|
99
|
+
connect_services
|
100
|
+
|
101
101
|
run_http
|
102
102
|
run_server
|
103
103
|
end
|
104
104
|
|
105
105
|
private
|
106
106
|
|
107
|
+
def connect_services
|
108
|
+
@services.all_services.map(&:connect)
|
109
|
+
end
|
110
|
+
|
111
|
+
def disconnect_services
|
112
|
+
@services.all_services.map(&:disconnect)
|
113
|
+
end
|
114
|
+
|
107
115
|
def run_http
|
108
116
|
HttpRoutes.set :log, @log
|
109
|
-
HttpRoutes.set :
|
117
|
+
HttpRoutes.set :services, @services
|
110
118
|
HttpRoutes.set :mongo, @mongo_connector.mongo
|
111
119
|
HttpRoutes.set :setup, @setup
|
112
120
|
HttpRoutes.set :config, @config
|
@@ -147,6 +155,8 @@ module RubyPitaya
|
|
147
155
|
|
148
156
|
@log.info "Server shutting down..."
|
149
157
|
|
158
|
+
disconnect_services
|
159
|
+
|
150
160
|
@etcd_connector.disconnect
|
151
161
|
@nats_connector.disconnect
|
152
162
|
@database_connector.disconnect
|
@@ -186,17 +196,17 @@ module RubyPitaya
|
|
186
196
|
|
187
197
|
begin
|
188
198
|
response = @handler_router.call(handler_name, action_name, @session,
|
189
|
-
@postman, @
|
199
|
+
@postman, @services,
|
190
200
|
@mongo_connector.mongo, @setup, @config,
|
191
201
|
@log, params)
|
192
202
|
rescue RouteError => error
|
193
|
-
@log.error "ROUTE ERROR: #{error.class} | #{error.message}
|
203
|
+
@log.error "ROUTE ERROR: #{error.class} | #{error.message} \n #{error.backtrace.join("\n")}"
|
194
204
|
response = {
|
195
205
|
code: error.code,
|
196
206
|
message: error.message
|
197
207
|
}
|
198
208
|
rescue Exception => error
|
199
|
-
@log.error "INTERNAL ERROR: #{error.class} | #{error.message}
|
209
|
+
@log.error "INTERNAL ERROR: #{error.class} | #{error.message} \n #{error.backtrace.join("\n")}"
|
200
210
|
response = {
|
201
211
|
code: StatusCodes::CODE_INTERNAL_ERROR,
|
202
212
|
message: StatusCodes::MESSAGE_INTERNAL_ERROR,
|
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'redis'
|
2
|
+
require 'rubypitaya/core/service_base'
|
2
3
|
|
3
4
|
module RubyPitaya
|
4
5
|
|
5
|
-
class
|
6
|
+
class RedisService < ServiceBase
|
6
7
|
|
7
8
|
attr_reader :redis
|
8
9
|
|
9
|
-
def initialize(
|
10
|
+
def initialize(setup)
|
10
11
|
@redis = nil
|
11
|
-
@redis_address =
|
12
|
+
@redis_address = setup['rubypitaya.redis.url']
|
12
13
|
end
|
13
14
|
|
14
15
|
def connect
|
@@ -21,5 +22,17 @@ module RubyPitaya
|
|
21
22
|
|
22
23
|
@redis.ping
|
23
24
|
end
|
25
|
+
|
26
|
+
def disconnect
|
27
|
+
@redis.close
|
28
|
+
end
|
29
|
+
|
30
|
+
def client
|
31
|
+
@redis
|
32
|
+
end
|
33
|
+
|
34
|
+
def clear_all_data
|
35
|
+
@redis.flushall
|
36
|
+
end
|
24
37
|
end
|
25
38
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RubyPitaya
|
2
|
+
|
3
|
+
class ServiceBase
|
4
|
+
|
5
|
+
def connect
|
6
|
+
raise "Service connect method not implemented"
|
7
|
+
end
|
8
|
+
|
9
|
+
def disconnect
|
10
|
+
raise "Service disconnect method not implemented"
|
11
|
+
end
|
12
|
+
|
13
|
+
# def get_service_instance
|
14
|
+
# raise "Service get_service_instance method not implemented"
|
15
|
+
# end
|
16
|
+
|
17
|
+
def clear_all_data
|
18
|
+
raise "Service disconnect method not implemented"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module RubyPitaya
|
2
|
+
|
3
|
+
class ServiceHolder
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@services = {}
|
7
|
+
end
|
8
|
+
|
9
|
+
def add(key, service)
|
10
|
+
check_service_instance(service)
|
11
|
+
@services[key] = service
|
12
|
+
end
|
13
|
+
|
14
|
+
def [](key)
|
15
|
+
@services[key].client
|
16
|
+
end
|
17
|
+
|
18
|
+
def all_services
|
19
|
+
@services.values
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def check_service_instance(service)
|
25
|
+
raise not_a_service_message(service) unless service.is_a? ServiceBase
|
26
|
+
end
|
27
|
+
|
28
|
+
def not_a_service_message(service)
|
29
|
+
"Service #{service.class} is not inheriting from RubyPitaya::ServiceBase"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'rubypitaya/core/setup'
|
2
2
|
require 'rubypitaya/core/handler_router'
|
3
|
-
require 'rubypitaya/core/
|
3
|
+
require 'rubypitaya/core/service_holder'
|
4
4
|
require 'rubypitaya/core/spec-helpers/setup_spec_helper'
|
5
5
|
require 'rubypitaya/core/spec-helpers/config_spec_helper'
|
6
6
|
require 'rubypitaya/core/spec-helpers/postman_spec_helper'
|
@@ -17,10 +17,10 @@ module RubyPitaya
|
|
17
17
|
@@config = ConfigSpecHelper.new
|
18
18
|
@@session = Session.new
|
19
19
|
@@postman = PostmanSpecHelper.new
|
20
|
+
@@services = ServiceHolder.new
|
20
21
|
|
21
22
|
@@response = {}
|
22
23
|
|
23
|
-
initialize_redis
|
24
24
|
initialize_mongo
|
25
25
|
|
26
26
|
is_cheats_enabled = @@setup.fetch('rubypitaya.server.cheats', false)
|
@@ -28,7 +28,7 @@ module RubyPitaya
|
|
28
28
|
|
29
29
|
|
30
30
|
@@initializer_content = InitializerContent.new(@@log,
|
31
|
-
@@
|
31
|
+
@@services,
|
32
32
|
@@mongo_connector.mongo,
|
33
33
|
@@setup,
|
34
34
|
@@config)
|
@@ -40,7 +40,7 @@ module RubyPitaya
|
|
40
40
|
handler_name, action_name = route.split('.')[1..-1]
|
41
41
|
|
42
42
|
@@response = @@handler_router.call(handler_name, action_name, @@session,
|
43
|
-
@@postman, @@
|
43
|
+
@@postman, @@services,
|
44
44
|
@@mongo_connector.mongo, @@setup,
|
45
45
|
@@config, @@log, params)
|
46
46
|
rescue RouteError => error
|
@@ -98,25 +98,12 @@ module RubyPitaya
|
|
98
98
|
@@postman
|
99
99
|
end
|
100
100
|
|
101
|
-
def
|
102
|
-
@@
|
101
|
+
def services
|
102
|
+
@@services
|
103
103
|
end
|
104
104
|
|
105
105
|
private
|
106
106
|
|
107
|
-
def initialize_redis
|
108
|
-
@@redis_connector ||= nil
|
109
|
-
|
110
|
-
if @@redis_connector.nil?
|
111
|
-
@@core_setup ||= Setup.new
|
112
|
-
redis_address = @@core_setup['rubypitaya.redis.url']
|
113
|
-
@@redis_connector = RedisConnector.new(redis_address)
|
114
|
-
@@redis_connector.connect
|
115
|
-
end
|
116
|
-
|
117
|
-
@@redis_connector.redis.flushall
|
118
|
-
end
|
119
|
-
|
120
107
|
def initialize_mongo
|
121
108
|
@@mongo_connector ||= nil
|
122
109
|
|
data/lib/rubypitaya/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubypitaya
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luciano Prestes Cavalcanti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -268,6 +268,7 @@ files:
|
|
268
268
|
- "./lib/rubypitaya/app-template/app/bll/player_bll.rb"
|
269
269
|
- "./lib/rubypitaya/app-template/app/config/initial_player.json"
|
270
270
|
- "./lib/rubypitaya/app-template/app/constants/status_codes.rb"
|
271
|
+
- "./lib/rubypitaya/app-template/app/handlers/error_handler.rb"
|
271
272
|
- "./lib/rubypitaya/app-template/app/handlers/hello_world_handler.rb"
|
272
273
|
- "./lib/rubypitaya/app-template/app/handlers/player_handler.rb"
|
273
274
|
- "./lib/rubypitaya/app-template/app/http/hello_world_http.rb"
|
@@ -357,9 +358,11 @@ files:
|
|
357
358
|
- "./lib/rubypitaya/core/postman.rb"
|
358
359
|
- "./lib/rubypitaya/core/protos/nats_connector.proto"
|
359
360
|
- "./lib/rubypitaya/core/protos/nats_connector_pb.rb"
|
360
|
-
- "./lib/rubypitaya/core/
|
361
|
+
- "./lib/rubypitaya/core/redis_service.rb"
|
361
362
|
- "./lib/rubypitaya/core/route_error.rb"
|
362
363
|
- "./lib/rubypitaya/core/routes_base.rb"
|
364
|
+
- "./lib/rubypitaya/core/service_base.rb"
|
365
|
+
- "./lib/rubypitaya/core/service_holder.rb"
|
363
366
|
- "./lib/rubypitaya/core/session.rb"
|
364
367
|
- "./lib/rubypitaya/core/setup.rb"
|
365
368
|
- "./lib/rubypitaya/core/spec-helpers/config_spec_helper.rb"
|